Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > алгоритм определения четкости изображения |
Автор: SHONY_S 7.11.2007, 12:17 |
Впервые столкнулся с такого рода задачей. Есть 2 рисунка (к примеру), один из них четкий, другой размытый. Как программно определить который какой? Рисунки могут быть разными, тоесть изображение на них может быть разное. Может кто-то подскажет простенький алгоритм ... ![]() |
Автор: skyboy 7.11.2007, 13:17 |
хм. алгоритм - нет. пожалуй, есть идея. можно считать абсолютной резкостью, когда две соседние точки имеют абсолютно разный цвет(000000 и FFFFFF) и абсолютная размытость - когда две соседние точки имеют цвет одинаковый(если под размытостью понимать влияние одних точек на цвет соседних). Надо придумать алгоритм подсчета "коэффициента размытости" для всей картинки и алгоритм расчета степени одинаковости для двух точек. |
Автор: SHONY_S 7.11.2007, 13:43 | ||
хорошая идея, надо попробывать ... |
Автор: maxim1000 7.11.2007, 15:37 |
можно ещё спектр посмотреть размытие приводит к ослаблению высоких частот |
Автор: SHONY_S 7.11.2007, 16:43 |
А как ? Можно описание алгоритма (или ссылку где найти), please! |
Автор: maxim1000 7.11.2007, 18:00 |
хм... ну про спектр вообще очень много написано ну... например, можно тут посмотреть http://en.wikipedia.org/wiki/Discrete_cosine_transform не утверждаю, что самое лучшее для понимания - просто первое, что в голову пришло впрочем, там, наверняка есть ссылки для более глубокого изучения... |
Автор: IAV 7.11.2007, 23:55 |
Возможно попробовать вычислить градиент изображения... На размытом градиент в каждой точке толжен быть не слишком большой, в то время как на четком (границы контуров) - довольно значительный. Этот метод испоьзуют для выделения границ на изображениях, возможно стоит попробовать плясать дальше от него =) |
Автор: skyboy 8.11.2007, 00:08 |
о! вот он - критерий различия цветов двух соселних точек! |
Автор: esperant0 8.11.2007, 07:21 |
для того чтобы ответить на ваш вопрос надо определить что такое четкое изображение. И это Ваша задача. Например фотография белого листа идеально резка. Но и градиент и спектр там никакие, а потому и спасуют предложеннные выше методы |
Автор: skyboy 10.11.2007, 09:28 |
а по-моему - абсолютно размыта ![]() |
Автор: esperant0 10.11.2007, 10:33 | ||
Т.е вы сфотографировали белый лист и получили его нечеткое изображение? Как вам это удалось? |
Автор: SHONY_S 27.11.2007, 11:09 |
Большое спасибо Вам всем! Хоть не все советы мне были предельно ясны но, вроде, мне удалось найти работающий вариант алгоритма определения четкости изображения... Сделал вот что: Считал в двумерный масив коды цветов рисунка (получилась матрица NxM), начал отнимать столбцы этой матрицы и записывать результаты в другую матрицу, но размерностью N x M-1. И т.д. пока конечная матрица не стала Nx1. Получился столбец. Вот по нем я и определяю степень (коехициент) размытости, тоисть среднее арифметическое вектори или сумма всех его елементов. Чем число больше, тем картинка четче. Соответственно, чем число ближе к нулю, тем картинка более размыта. Основные недостатки метода: * чем больше картинка, тем медленнее все работает; * если брать только кусок изображения, то можно попасть на область однородного цвета (как писалось выше, белая картинак); |
Автор: esperant0 27.11.2007, 12:10 | ||
используй вероятностную версию. Тогда можно получить быстрый алгоритм, не зависящий от размера изображения. |
Автор: SHONY_S 29.11.2007, 12:53 |
А можно по подробнее о вероятносной версии.... |
Автор: esperant0 29.11.2007, 13:59 | ||
дам пример. Пусть у тебя есть картинка 256 степени серого Ты хочешь знать картинка вся черная (255) или в ней больше 10 процентов белых пикселей. Предположим тебя устраивает если алгоритм ошибется с вероятностью 0.000001 Тогда алгоритм такой ----------------- 1) Случайно берем 1000 пикселей ( заметь не зависит от размера картинки) 2) Если среднее этих пикселей содержит не более 5 процентов белых говорим что картинка черная, иначе говорим что в картинке хотябы 10 % белых google property testing for image processing |