Страницы

Поиск по вопросам

среда, 27 февраля 2019 г.

Как программно определить, размыто ли изображение?

Доброго времени суток. Как программно определить, размыто ли фото? Нужно определить, размыто ли фото, и если да, то не дать отправить его на сервер. Возможно, есть какие-то библиотеки или готовые решения? Заранее спасибо.


Ответ

Для этого применяется т.н. алгоритм преобразования Фурье - для обыденного понимания достаточно рассматривать это как разложение сигнала на набор синусоид (сейчас закидают тапочками математики...). Изображение надо рассматривать как двумерный сигнал и, соответственно, разложить его в двумерный ряд Фурье, полученный сигнал проанализировать. В реальных вычислениях применяется дискретное преобразование Фурье - принято обозначать это как FFT - Fast Fourier Transformation. Если в сигнале слишком мало высокочастотных компонент, значит изображение размыто. Что такое слишком много или слишком мало - устанавливайте сами. Для упрощения анализа опять-таки принято полученный сигнал (а по сути новый битмап) проинтегрировать (например, Лапласом) и получить одномерный вектор, который-таки более удобен для анализа. В общем, как-то так. Гуглите по ключевому слову FFT+Java - авось повезет.

Комментариев нет:

Отправить комментарий