powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Kак узнать, что на фото есть шум.
25 сообщений из 60, страница 2 из 3
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
25 сообщений из 60, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Kак узнать, что на фото есть шум.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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