powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Kак узнать, что на фото есть шум.
60 сообщений из 60, показаны все 3 страниц
Kак узнать, что на фото есть шум.
    #38428307
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К примеру фото как на картинке зашумлено. Как это узнать?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428316
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень просто - на фото всегда есть шум.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428442
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не всегда. Даже если и всегда - ответ не полный. Прошу переответить. :)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428471
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfНе всегда. Даже если и всегда - ответ не полный. Прошу переответить. :)Как отличить фото гладкого помидора с шумами от фото влажного шершавого асфальта без шумов? Прошу перезадать вопрос
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428481
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П. С. Я бы начал с какой-нибудь статистической обработки. Например, разница между двумя пикселями в каждом цветовом канале - насколько равномерно распространена по поверхности? Как Взял бы несколько фото с шумами и несколько без, посмотрел в них закономерности...
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428504
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber,

Вопрос вот именно так и стоит :-)

To есть так ?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428541
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот между всеми примерно такая разница. Здесь тот что в первом посте. И как теперь узнать, где шум?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428560
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы попробовал посчитать среднее арифметическое модуля дельты между соседними пикселями. Если нет изображений, имеющих ярко выраженный горизонтальный характер, то за соседние можно брать пиксель справа. Чем больше шум, тем выше итоговая величина.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428564
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft прав. Все фотографии (файлы созданные с помощью цифровика) фиксируют
шум света естественного мира на своей матрице. Поэтому что считать фоткой а что
шумом - вопрос философский. Думаю что многие фотографы не раз снимали дым,
снег или дождь преподавая это с апломбом как некое художественное
творение, и они будут категорически не согласны с нашим топиком.

Чу... я уже слышу как они откручивают штативы чтобы удобнее было нас бить.

P.S. По сабжу можно погуглить по ключевым словам Psnr, Nrms
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428834
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВсе фотографии (файлы созданные с помощью цифровика) фиксируют
шум света естественного мира на своей матрице.
на аналоговом материале - что характено - тоже

Хотя что есть шум?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428864
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfrockclimber,

Вопрос вот именно так и стоит :-)

To есть так ?
Да фиг его знает. Все, что я могу сказать о цифровом шуме "на глазок" - то, что фото с шумами от фото без шумов отличается примерно как шершавая поверхность от гладкой. Но у меня нет профильного мат. образования, я не знаю алгоритмов и прочего, я просто написал, с чего бы начал решать задачу. Посчитал бы разные коэффициенты, сравнил бы с тем, что видит глаз. Еще сравнил бы с пестрой фотографией, но без шумов. А так как мне это делать в лом, то больше ничего не могу сказать.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428881
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftпосчитать среднее арифметическое модуля дельты между соседними пикселямиСтранно, но это действительно работает... Из 600 фоток 578 распознаются, и фасле детект только для 11.
(асфальт не проверял :) )
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428886
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimberтак как мне это делать в ломвсё делать буду я ;)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... вобщем по формуле Nrms:



Где Е(i)- значения эталонной картинки а N(i) - зашумлённой (Noizy).

В качестве значения можно брать любой цвет из цветовых компонент но точнее взять
яркость (Value) как усреднённое значение триплета RGB



или есть более точная формула с весовыми коэффициентами которые
стоят возле каждого цвета, которую я навскидку не помню.

Обход пикселов для оценки Nrms можно делать в любом порядке.

Тоесть для оценки уровня шума нужно отделить шум от полезного сигнала.
Как это сделать - ХЗ. Либо мы завадомо имели эталонную картинку либо
мы берём обыкновенный полосовой фильтр и фильруем шумную картинку
в предположении что шум проявлен в диапазоне (например мелкие точки
соответствуют высоким частотам) и получаем почти эталонную. Или подойдет
любой другой фильтр (медана к примеру). В отличие от оценки Nrms
фильтрацию нужно делать в строгом порядке замеров Value пикселов
в соовтетствии с алгоримом. Для медианы берутся 8 пикселов-соседов
а для полосового фильтра я к сожалению невкурсе.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428894
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Эталонной нет. А вот фильтровать зашумленную, чтобы потом (вариантов куча), надо до поры до времени. Иными словами надо знать когда же картинка станет без шума и надо останавливаться её очищать, а то можно доочищаться до равномерного серого цвета...
И опять таки - выполнил ли конкретный фильтр очистку и надо ли её продолжать узнать можно.. Но может надо пробовать другой?.. А может она уже без шума..
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428906
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно пойти по принципу обучения и заставить человека (1 раз) перебрать кучу снимков
и разбить ее на 2 кучки. В одну он будет класть фотки которые считает шумными. А в другую
- не шумные. Потом для шумных замерять коэффициент Nrms и взять его как пороговое значение NrmsMAX.

Далее вывод. Если для произвольной картики Nrms>NrmsMAX то считать ее шумной.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428909
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfmiksoftпосчитать среднее арифметическое модуля дельты между соседними пикселямиСтранно, но это действительно работает... Из 600 фоток 578 распознаются, и фасле детект только для 11.
(асфальт не проверял :) )Можно еще попробовать среднее квадратичное и т.п.
Можно поиграть с выбором соседних пикселей, вплоть до не самых соседних.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428933
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftпоиграть с выбором соседних пикселей
тут как не очень... первые 3 имеджа

Соседи
Noisy image 1: 7.164451
Noisy image 2: 25.428951
Noisy image 3: 29.718850
Clean image: 2.128019

Соседи через 1
Noisy image 1: 7.785213
Noisy image 2: 25.750640
Noisy image 3: 30.087269
Clean image: 3.792111

Соседи через 2
Noisy image 1: 8.467532
Noisy image 2: 26.160179
Noisy image 3: 30.339670
Clean image: 5.155840


maytonзаставить человека
пробовал такой подход,
когда эти кучки пересматривали другие, больше половины браковали, мол ну тут уж ваш алгоритм (так всем было сказано) совсем не канает :)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428935
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, направление соседей и их количество принципиальной разницы не дали. только что комплексити больше.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428944
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Направление станет важным если картинка будет муаром, фототестом
или текстурой, содержащей мелкую зебру где много чёрно-белых параллельных
полос.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38428949
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

я имел ввиду, что, допустим, приняв mean дельты как трешxолд равный 4 - происходит ~5% не правильной классификации. И это не меняется при смене направления. Отдельные картинки да, где-то больше, где-то меньше, но в целом результат не меняется.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429189
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

Попробуйте для ваших картинок построить график плотности распределения значений дельты.
Вероятно, для зашумленных и не зашумленных изображений он будет отличаться и будет более ясно что именно нужно ловить.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429464
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу попробовать для тестов с "перцами" определить уровень шума на следующем псевдокоде:

Код: javascript
1.
2.
3.
4.
5.
image1 = loadImage "Pepperz_1.jpg";
image2 = clone image1;
doMedianFilter src->image2, medianRadius->"1 pixel";
nrms = calculateNrms imageA -> image1, imageB-> image2, axisOfDifferrnce-> "Brightness";
print "Nrms = $nrms";



Здесь есть нюансы. Какой фильтр брать? Зачем медиана? Почему радиус медианы 1 пиксел а не 2 не 1.5 e.t.d.
Почему оценка уровня шума идёт по каналу яркости "Brightness" а не по каналу цвета или насыщенности.
На эти я вопросы я пока сам не могу ответить. Просто считаю это экспертным мнением. Дескыть так лучше.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429484
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один фикс.

Код: javascript
1.
doMedianFilter src->image2, medianRadius->"1 pixel" axisOfMedian->"Brightness";
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429713
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Кодить медиану мне лень. Возьму Gimp или Photoshop и эту операцию сделаю там.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429722
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну с моими перцами проще, они черно-белые. Цветные фото пока оставил для фотографов с Photoshop :)
Но если всё же смотреть цветные фото исходя из тут предложенной оценки шума, то каждый цвет это тоже чб изображение.

так что из всех вопросов - остаётся только медиана и радиус, с ними при фильтрации нет потери резкости и потери краёв.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfНо если всё же смотреть цветные фото исходя из тут предложенной оценки шума, то каждый цвет это тоже чб изображение.

Нет. Такой подход неправильный. Я тоже когда-то так заблуждался. Между R,G,B каналами картинки действительно
существует когерентность. Но на восприятие картинки 90% оказывает канал яркости а Hue, Saturation или U или V компоненты
для цветоразностных систем несут оставшиеся 10% смысла. На этом принципе работают JPEG кодеки, телевизионные
системы Secam и львиная доля видеокодеков. Грубо говоря, на тестах с подопытными людишками, яркостный сигнал
оказывал большее воздействие нежели цвета и насыщенность.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429766
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anyway для морфологического анализа надо будет в грей-скал переводить.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429773
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переводи если хочешь. Но для оценки Noise достаточно будет вычислить яркостную
компоненту для цветной картинки "на ходу". И перевод здесь вобщем-то необязателен.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429933
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftCheerful Calf,

Попробуйте для ваших картинок построить график плотности распределения значений дельты.
Вероятно, для зашумленных и не зашумленных изображений он будет отличаться и будет более ясно что именно нужно ловить.Я потералася... (ц) Гадя Петрович
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429937
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа. Кодить медиану мне лень. Возьму Gimp или Photoshop и эту операцию сделаю там.Результат когда будет? Ь)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429953
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

Попробуйте считать долю (от общего числа) пикселей с дельтой более 20.
У зашумленных эта доля будет велика, у остальных низка.
Возможно, порог стоит брать не 20, а что-то еще в диапазоне 10-50. Если времени много, то можно перепробовать все значения и поискать, где это разница между зашумленными/незашумленными наиболее велика.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38429974
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем-то я на проекте сейчас . Вечерком приду домой. Поставлю кофе. Достану бук.
Сяду в кресельце. Такшто пока... теоретизирую
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430085
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kстати насчет асфальта - фотка мобильником из окна. Меан дельты 1.6 (что тоже подходит по незашумленное).
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте применить фильр Sharpen к картинкам. И замерять дельту.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430187
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eсли правильно его понял - это простой convolution matrix [-1,-1,-1;-1,9,-1;-1,-1,-1] ?
Если так, то дельта mean дельт уменьшилась
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430197
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё таки плохо, что нельзя редактировать сообщения. Надо поднять этот вопрос на ОНС, что-то уже месяц никто не предлагал...

Вот эта картинка должна была быть. Шарпенед в сравнении с нешарпенед.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430475
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПереводи если хочешь. Но для оценки Noise достаточно будет вычислить яркостную
компоненту для цветной картинки "на ходу". И перевод здесь вобщем-то необязателен.
+105
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430481
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилmaytonПереводи если хочешь. Но для оценки Noise достаточно будет вычислить яркостную
компоненту для цветной картинки "на ходу". И перевод здесь вобщем-то необязателен.
+105В итоге мне всё равно надо к бинарному имеджу прийти. Так что никакой разницы когда я сдеелаю его серым. А анализировать 3 слоя более комплексно. Или я не догоняю че советуют?)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430488
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfА анализировать 3 слоя более комплексно.иллюзия
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430501
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иллюзия, что 3 > 1 ?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430544
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот чтото накодил.

Код: sql
1.
2.
3.
4.
5.
6.
java -ea -jar peppers_1_median_filtered.png peppers.jpg

Image size                              : 512 x 512
Elapsed time                            : 0 s
Nrms (standard deviation)               : 10.147772
Psnr (peak-to-peak signal-to-noise ratio: 20.779046
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430551
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу. Вот так.

Код: powershell
1.
2.
set IMAGEDIR=d:/pics/noisy
java -ea -jar estimateNoise.jar %IMAGEDIR%/peppers_1_median_filtered.png %IMAGEDIR%/peppers_1.jpg  



Полезный кусок кода. На этот раз реальный язык.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
    public static strictfp int getBrightness(int rgb){
        int r = (rgb & 0xFF0000) >> 16;
        int g = (rgb & 0xFF00) >> 8;
        int b = (rgb & 0xFF);
        int brightness = (int)(r * 0.299 + g * 0.587 + b * 0.114);
        assert brightness>=0 && brightness<256;
        return brightness;
    }

    // TODO: remove global
    static int statisticAmax = 0;

    public static strictfp double esimateNrmsRatioInBrightnessChannel(BufferedImage ethalon,BufferedImage noised){
        int ex = ethalon.getWidth();
        int ey = ethalon.getHeight();
        int nx = ethalon.getWidth();
        int ny = ethalon.getHeight();
        if (ex!=nx || ey!=ny) throw new IllegalArgumentException("Ethalon image and noised shoild be equals");
        int k = ex * ey;
        double nrms = 0.0;
        int amax = 0;
        for(int y = 0; y < ey ; y++){
            for(int x = 0; x < ex ; x++){
                int eb = getBrightness(ethalon.getRGB(x, y));
                int nb = getBrightness(noised.getRGB(x, y));
                int delta = abs(eb - nb);
                amax = max(amax,delta);
                nrms+=(double)(delta*delta);
            }
        }
        statisticAmax = amax;
        return sqrt(nrms / k);
    }
....
...
        BufferedImage ethalonImage = ImageIO.read(new FileInputStream(ethalon));

        BufferedImage noisedImage = ImageIO.read(new FileInputStream(noised));

        long begin = System.currentTimeMillis();
        double nrms = esimateNrmsRatioInBrightnessChannel(ethalonImage, noisedImage);
        long end = System.currentTimeMillis();

        printf("Image size                              : %d x %d\n",ethalonImage.getWidth(),ethalonImage.getHeight());
        printf("Elapsed time                            : %d s\n",(end-begin)/1000);
        printf("Nrms (standard deviation)               : %f\n",nrms);
        printf("Psnr (peak-to-peak signal-to-noise ratio: %f\n",20*log10(statisticAmax/nrms));


По поводу JPEG. Конечно в рамках этого форума мы аттачим картинки. Но не забываем что JPEG
кодеки вносят принципиальные искаженяи класса ФНЧ в любую картинку даже когда вы задаёте
quality=100%. Поэтому имейте в виду что для экспертных оценок они совершенно не годятся.

Я не смог приаттачить к форуму peppers_1_median_filtered.png (больше 150к) поэтому даю скрипт для получения
этой картинки утилитами ImageMagic.

http://www.imagemagick.org/script/command-line-processing.php
http://www.imagemagick.org/script/command-line-options.php#median

Код: powershell
1.
convert peppers_1.jpg -median ..... peppers_1_median_filtered.png



(как-то так. Опции фильтра медианы не помню. Посмотрите сами).

В текстовом редакторе Gimp медиана есть только называется по другому.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430552
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дарю бинарник.

Всё пошёл спать.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430666
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfИллюзия, что 3 > 1 ?
Где ты нашёл 3? Переведи картинку в L*a*b* и посмотри как выглядят цветовые каналы
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430980
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилL*a*b*Что за зверь (простыми словами)?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38430988
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfИзопропилL*a*b*Что за зверь (простыми словами)?
Нелинейное отображение RGB. Его почему-то очень любят в издательствах.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431246
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕго почему-то очень любят в издательствах.
расстояние между цветами в нём вычисляется (Дельта E)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431699
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак. Под insipration ответов написал. Искусственный Гаусовый шум определяется с точностью до сотых, натуральный шум тоже детектируется без ошибок.
Теперь не совсем по программированию вопрос - как это описать математической формулой?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
bool HasNoise(int[512,512] image)
{
	int[] I = image;
	for (int i = 0; i < 511; i++)
	{
		for (int j = 0; j < 512; j++)
		{
			// Разница соседних пикселей, делённая на иррациональное число
			// matrica транспонируется
			I[j,i] = (I[i,j]-I[i,j+1])/sqrt(2);
		}
	}
	// то же самое, чтобы получить разницу с нижними соседями
	int sum = 0;
	for (int i = 0; i < 511; i++)
	{
		for (int j = 0; j < 512; j++)
		{
			// Разница соседних пикселей, делённая на иррациональное число
			// matrica транспонируется
			I[j,i] = (I[i,j]-I[i,j+1])/sqrt(2);
			sum += I[j,i]
		}
	}
	// Абсолютное отклонение
	double MAD = 0;
	for (int i = 0; i < 511; i++)
	{
		for (int j = 0; j < 512; j++)
		{
			MAD += Abs(I[j,i] - (sum / 511^2));		
		}
	}
	MAD = MAD / 511^2;
	// Порог, выше которго всё принимаем за шум
	if (MAD > 0.03) return true;
	return false;
}
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431710
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для всех I входящих в множество пикселов где i,j пробегает в диапазоне от 0 до 512
выполнять формулу e.t.c. Как-то так.

А зачем тебе формула? Хочешь умно выглядеть? Как Базист ?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431734
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что будет, если на фото без шума запечатлено фото с шумом?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431738
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яж говорю. Это всё вопрос метрики. Мы зададим некий порог и будем решать. Кто шумный и кто нешумный
на основании 1-й цифры. Ну... мне-бы так хотелось в идеале.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431764
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДля всех I входящих в множество пикселов где i,j пробегает в диапазоне от 0 до 512
выполнять формулу e.t.c. Как-то так.?
А как в формуле обозначить что это надо сделать два раза?

maytonА зачем тебе формула? Хочешь умно выглядеть? Как Базист ?
Надо powerpoint делать для лекции :) на худой конец красивый псевдокод.

Лагмана что будет, если на фото без шума запечатлено фото с шумом?Ну тут только квантованием на секторы... я всё-таки предполагаю некоторую гомогенность, позволяющую анализировать фото целиком.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431781
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Надо powerpoint делать для лекции :) на худой конец красивый псевдокод.

Смеешся. На power point делают всё либо текстом либо иллюстрациями.
С мат-формулами слушатели твоего семинара впадут в тоску и отчаяние
и будут смотреть в окно.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431844
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

не впадут за один слайд. зато если какой ирод опять спросит а как это выглядит математически, я ему сразу - а на, выкуси :)
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431863
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если я вот этот код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
int[] I = image;
	for (int i = 0; i < 511; i++)
	{
		for (int j = 0; j < 512; j++)
		{
			// Разница соседних пикселей, делённая на иррациональное число
			// matrica транспонируется
			I[j,i] = (I[i,j]-I[i,j+1])/sqrt(2);
		}
	}
	// то же самое, чтобы получить разницу с нижними соседями
	int sum = 0;
	for (int i = 0; i < 511; i++)
	{
		for (int j = 0; j < 512; j++)
		{
			// Разница соседних пикселей, делённая на иррациональное число
			// matrica транспонируется
			I[j,i] = (I[i,j]-I[i,j+1])/sqrt(2);
			sum += I[j,i]
		}
	}



Заменю на такой.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
....
	for (int i = 0; i < 511; i++)
	{
		for (int j = 0; j < 511; j++)
		{
			sum += ((I[i,j]-I[i,j+1]) + (I[i,j]-I[i,j+1]))/sqrt(2);
		}
	}
...


Дельты в правом нижнем углу посчитать отдельно. Вне цикла. И я-бы брал ВСЕ дельты
по модулю т.к. твой код при некотором стечении обстоятельтв даст 0 на очень
шумной но симметичной картинке за счёт взаимной компенсации плюсов и минусов.

Еще несколько оптимизаций. Убрать деление на константу. Это тоже можно сделать
в конце поделив на 512*512/sqrt(2). И отказаться от вложенных массивов в пользу
обычного одномерного. Не знаю как в этих ваших шарпах но в Java он работает быстрее.

Ну и параметризировать размеры картинки.

Проверяй.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431899
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonотказаться от вложенных массивов в пользу
обычного одномерногоэто в каком месте и как?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431901
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну есть такая тема что bool HasNoise(int[512,512] image) это как-бе не круто и для лохов.
А bool HasNoise(int[] image) это очень даже кошерно и православно. По перформансу. Просто матрицу
ты вытягиваешь с 1 массив. В Сях это вообще нативная вещь и юзабельная. В Java
отказ от вложенных массивов даёт прирост к скорости. Это я лично проверил.
Как в Шарпах - не знаю. Но думаю также.
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38431913
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во блин, а посоны не предупредили....
Я обычно CvMat для этого использую, например как тут
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
private: Mat IWSP(Mat inputImg){
	bool needFilter = false;
	int g = 0, N = 0;
	for(int r = 0; r < inputImg.cols; r++){
		for(int c = 0; c < inputImg.rows; c++){
			if((inputImg.at<uchar>(cv::Point(r, c)) == 255) || (inputImg.at<uchar>(cv::Point(r, c)) == 0))
			{
				needFilter = true;
			}
			else
			{
				// For Computation of Trimmed Global Mean in case we will need to filter image
				g = g + inputImg.at<uchar>(cv::Point(r, c));
				N++;
			}
		}
	}



А вытянуть его - это как? Буквально взять и вытянуть и обращаться как к i[j*512+i] ?
...
Рейтинг: 0 / 0
Kак узнать, что на фото есть шум.
    #38432056
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагмана что будет, если на фото без шума запечатлено фото с шумом?
будет детектирован шум
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Kак узнать, что на фото есть шум.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]