Еще один очень простой способ оценить резкость изображения - использовать фильтр Laplace (или LoG) и просто выбрать максимальное значение. Использование надежной меры, такой как 99,9% квантиль, вероятно, лучше, если вы ожидаете шума (т. Е. Выбираете N-высокий контраст, а не самый высокий контраст). Если вы ожидаете изменения яркости изображения, вы также должны включить шаг предварительной обработки для нормализации яркости / контраст (например, выравнивание гистограммы).
Я реализовал предложение Саймона и этот в Mathematica и попробовал его на нескольких тестовых изображениях:
[/g0]
Первый тест размывает тестовые изображения с использованием гауссовского фильтра с различным размером ядра, затем вычисляет БПФ размытого изображения и принимает среднее значение на 90% самых высоких частот:
testFft[img_] := Table[
(
blurred = GaussianFilter[img, r];
fft = Fourier[ImageData[blurred]];
{w, h} = Dimensions[fft];
windowSize = Round[w/2.1];
Mean[Flatten[(Abs[
fft[[w/2 - windowSize ;; w/2 + windowSize,
h/2 - windowSize ;; h/2 + windowSize]]])]]
), {r, 0, 10, 0.5}]
Результат в логарифмическом графике:
[/g1]
5 строк представляют собой 5 тестовых изображений, ось X представляет собой гауссовский радиус фильтра. Графики уменьшаются, поэтому БПФ является хорошей мерой для резкости.
Это код для оценки вероятности «высшей точки»: он просто применяет LoG-фильтр и возвращает самый яркий пиксель в результате фильтра:
testLaplacian[img_] := Table[
(
blurred = GaussianFilter[img, r];
Max[Flatten[ImageData[LaplacianGaussianFilter[blurred, 1]]]];
), {r, 0, 10, 0.5}]
Результат в логарифмическом plot:
[/g2]
Распространение для не размытых изображений здесь немного лучше (2.5 против 3.3), главным образом потому, что этот метод использует только самые сильные контрастность изображения, тогда как БПФ является, по существу, средним по всему изображению. Функции также уменьшаются быстрее, поэтому может быть проще установить «размытый» порог.
Рендеринг текста в кнопках JFXButtons разрешается с помощью одного из следующих селекторов CSS:
.button .text {
-fx-font-size: 18;
}
.jfx-button .text {
-fx-font-size: 18;
}
#buttonId .text {
-fx-font-size: 18;
}
Устранено распознавание шрифта с использованием этой строки кода в методе start () для каждого внешнего шрифта: [115 ]
@Override
public void start(Stage stage) throws Exception {
//load all application external fonts
javafx.scene.text.Font.loadFont(
getClass().getResource("/fonts/KottaOne-Regular.ttf").toExternalForm(), 15f);
//...
}
Чем шрифты готовы к использованию во всех файлах CSS, используя:
.label {
-fx-font-family: "Kotta One";
-fx-font-size: 20;
}