Я настоятельно рекомендовал бы boost::bind
и boost::function
для чего-либо как это.
Видят Передача и называют функцию членства (повышение:: свяжите / повышение:: функция?)
Вы можете выполнить 2D-БПФ и поиск частотные коэффициенты для значения, превышающего определенный порог (чтобы исключить ложные срабатывания из-за ошибок округления / края). Размытое изображение никогда не будет иметь высоких частотных коэффициентов (большие значения X / Y в частотном пространстве).
Если вы хотите сравнить с определенным алгоритмом размытия, прогоните один пиксель через 2D-FFT и проверьте другие изображения, чтобы увидеть если они имеют частотные составляющие вне диапазона эталонного БПФ. Это означает, что вы можете использовать один и тот же алгоритм независимо от того, какой тип алгоритма размытия используется (прямоугольное размытие, гауссово и т. Д.)
Учитывая только размытое растровое изображение, вы, вероятно, не сможете.
Учитывая исходное растровое изображение и размытое растровое изображение, вы можете сравнить два пикселя за пикселем и использовать простую разницу, чтобы рассказать вам, как сильно размыто.
Учитывая, что я предполагаю, что у вас нет исходного изображения, возможно, стоит попробовать выполнить какое-то обнаружение краев на размытом изображении.
This Paper предлагает метод, использующий вейвлет-преобразование Харра, но, как говорили другие плакаты, это довольно сложная тема.
Эээ ... у вас есть исходное изображение? Однако то, что вы просите, сделать непросто ... если это вообще возможно
Это всего лишь случайность, но вы могли бы сделать это, преобразовав Фурье "размытое" и исходное изображение и посмотреть, сможете ли вы получить что-то с очень похожими частотными профилями путем постепенной фильтрации нижних частот исходного изображения в частотной области. Однако проверка на «сходство» была бы довольно сложной сама по себе.