2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Помогите понять как делать и написать формулу
Сообщение17.10.2013, 12:47 


16/05/10
91
Литва
Может ошибся веткой, заранее извиняюсь (за информативное название топика тоже).

Пытаюсь установить есть ли на ч/б фото шум, стандартными методами надо иметь камеру и сравнить с идеальной картинкой, или иметь много одинаковых фото и сравнить их между собой, или визуально выбрать однотонный участок и посмотреть гистограмму распределения яркости.
У меня есть только один конечный снимок, камеры нет, выбирать однородный участок лень :)

Пробую подход: брать разницу между двумя соседними пикселями, и найти среднее арифметическое этой разницы... Наткнулся на статью, где предлагают брать разницу между соседними пикселями (левый и правый), транспонировать матрицу и повторить. Это правильнее так как разница заметна тогда и по горизонтали, и по вертикали. Также в статье зачем-то делят после вычитания на квадратный корень из двух.
Подумал - тоже верно, так как имея матрицу [100, 50; 50, 30] без деления результат будет 0, а с делением -10.3553
Код матлаба для этой операции такой
Код:
H = image;
H = (H(1:n-1,:) - H(2:n,:))'/sqrt(2);
H = (H(1:n-1,:) - H(2:n,:))'/sqrt(2);


Вопрос - почему делим именно на корень из двух? Ведь при многих других значениях знаменателя результат тоже будет отличный от нуля, какие плюсы в корне из 2?

 Профиль  
                  
 
 Posted automatically
Сообщение17.10.2013, 16:38 
Супермодератор
Аватара пользователя


20/11/12
5728
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Программирование»

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение17.10.2013, 18:55 
Аватара пользователя


31/10/08
1244
CheerfulCalf в сообщении #776373 писал(а):
Подумал - тоже верно, так как имея матрицу [100, 50; 50, 30] без деления результат будет 0, а с делением -10.3553

Как вы проверяли? Запустил код без деления +30 с делением +15

А куда в коде усреднение пропало? Да и явно в коде ошибки в циклах.

Тоже не знаю почему на $\sqrt{2}$ делят. Толи кто-то ошибся и должно быть деления на 2 для сохранения длины масштаба. Толи хотели посчитать производную по диагонали, тогда надо делить только один раз на $\sqrt{2}$.

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение17.10.2013, 19:12 


16/05/10
91
Литва
Pavia в сообщении #776548 писал(а):
Как вы проверяли?
Ерунду сказал. Отнял дважды 50 из первой матрицы.
Pavia в сообщении #776548 писал(а):
А куда в коде усреднение пропало? Да и явно в коде ошибки в циклах. ... Тоже не знаю почему на $\sqrt{2}$ делят. Толи кто-то ошибся ...
Я усреднение просто не выложил, так как с $\sqrt{2}$ думал разобраться сначала... Вот весь код и он работает. Только не понятно что именно он делает :(
Код:
%% In practice, the noise level sigma is unknown.
%  For additive Gaussian noise, a good estimator is given by the median
%  of the wavelet coefficients at the finer scale. An even simple
%  estimator is given by the normalized derivate along X or Y direction.

%% Load a clean image.
n = 256;
M0 = rescale(load_image('boat', n));

%% Generate a noisy image.
sigma = 0.06;
M = M0 + randn(n,n)*sigma;

%% First we extract the high frequency residual.
H = M;
H = (H(1:n-1,:) - H(2:n,:))'/sqrt(2);
H = (H(1:n-1,:) - H(2:n,:))'/sqrt(2);

%% Display.
clf;
imageplot(clamp(M), 'Noisy image', 1,2,1);
imageplot(H, 'Derivative image', 1,2,2);

%% Noise estimator.
sigma_est = mad(H(:),1)/0.6745;
disp( strcat(['Estimated noise level=' num2str(sigma_est), ', true=' num2str(sigma)]) );

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение17.10.2013, 20:35 
Аватара пользователя


31/10/08
1244
CheerfulCalf
http://www.mathworks.com/matlabcentral/ ... index.html

:facepalm: Это просто масштабный коэффициент, подобранный эмпирически. Хотя практически хорошо известен и он несколько больше. В данном случае его просто разложили на 3 равных множителя и раскидали по разным пространствам.

В статье упор делается на изменения размерности. Можешь поискать или попробовать провести исследования как влияет размер матрицы на уровень максимального выброса ошибки. Хотя практически скорее всего будут влиять другие факторы.

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение18.10.2013, 00:24 


16/05/10
91
Литва
To есть от того, что я уберу эти коэффициенты (деление на корень из 2) - ничего не изменится?

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение18.10.2013, 05:28 
Аватара пользователя


31/10/08
1244
CheerfulCalf в сообщении #776651 писал(а):
To есть от того, что я уберу эти коэффициенты (деление на корень из 2) - ничего не изменится?

Его проще убрать и вывести по нормальному. Тем более нет никакого смысла разделять его на 3 множителя.
Можно ли его выкинуть совсем? Так я же написал исследуй. Выкинуть можно разница там небольшая.

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение18.10.2013, 14:11 


16/05/10
91
Литва
Pavia в сообщении #776666 писал(а):
Так я же написал исследуй. Выкинуть можно разница там небольшая.

У меня весь смысл заключается в оценке зашумленности фото. Я еще до форума пробовал выкинуть, и без него по результату можно классифицировать шум/не шум и даже какой это мог бы быть шум. Потому я и полном недоумении в каких случаях результат без корня будет отличаться от результатa с ним..

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение18.10.2013, 17:15 
Аватара пользователя


31/10/08
1244
CheerfulCalf в сообщении #776806 писал(а):
ум. Потому я и полном недоумении в каких случаях результат без корня будет отличаться от результатa с ним..

В статье допущен ряд логических ошибок. Поэтому коэффициент применять нельзя нигде и некогда.
Как ты заметил он не влияет на результат.
Вопрос когда он будет влиять. Ну это трудно ответить зависит от того как и что считаешь и что измеряешь. Но для большинства задач он влиять не будет.

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение18.10.2013, 17:29 


16/05/10
91
Литва
Pavia в сообщении #776895 писал(а):
В статье допущен ряд логических ошибок.
A можно меня носом в них? Для более глубокого осмысления...

 Профиль  
                  
 
 Re: Помогите понять как делать и написать формулу
Сообщение19.10.2013, 10:06 
Аватара пользователя


31/10/08
1244
Честно мне лень. Пойдём по порядку. В статье не приводятся выкладки, а сразу результаты.
1) Максимум шума зависит от числа элементов при одинаковой модели шума в статье это не учитывают. Более того они говорят о размерности, а размерность только следствие. У них масштаб изображения равен 256 на 256 и элемент 0..255. Откуда видимо всё и потекло.
2) Как-то у них размерность дробная что ли по графикам посмотри. Т.е масштабировать надо было не размерность, а величину порога ошибки.
3)Эмпирическая формула. А они не всегда бывают правильными.
4) В третьих размерность неправильно посчитана. Они решили что это 3 хотя на самом деле 2, так как порог выбирается от величины коэфициента.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group