Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Фильтр Винера

27K
17 июля 2007 года
aush
4 / / 04.06.2007
Доброго времени суток!

Имеется такая задача - реализация фильтра Винера.
Сам фильтр, вроде как классика, и описан много где, но вот конкретной реализации или достаточно подробного описания алгоритма и что-то нигде не нашел.

Выглядит он и действительно несложно: G(u,v) = H*(u,v) / ( |H(u,v)|^2 + Pn(u,v)/Pf(u,v) )
Однако для человека, практически впервые подошедшего к проблеме работы с изображениями возникают некоторые вопросы.

1. Сказано, что H(u,v) - это у нас "blurring filter". Даже сказано, что в случае когда у нас расфокусировка H(u,v)=e^(-m*((u^2+v^2)^(5/6))) где m-сила размытия. Ок, а как тогда выглядит линейное ("motion blur") ?
2. H*(u,v) - это что?
3. Как считается |H(u,v)| ?
4. Ну и Pn(u,v) c Pf(u,v), про них сказано, что это мощности шума и сигнала соответственно. Как их считать?

Все, что я нашел на данный момент это вот:

 
Код:
function out = wienerFilter2(G, H, s)

dim = size(G);

Gf = fft2(G);
Hf = fft2(H, dim(1), dim(2));

H2 = abs(Hf).^2;
out = ifft2(H2.*Gf./((H2+s).*Hf));

Сам этот код меня несколько смущает, на пример, не совсем понятно, что есть dim(1) и dim(2). ну и запись "H2.Gf*." Тоже не совсем ясна, может просто ошибка?

Вот что более-менее понятно, что fft2 - двухмерное быстрое преобразование Фурье. Это оно?

Код:
void Filter()
{
    int i,j,u,v;
    double F_Re_DFT,F_Im_DFT,B_Re_DFT,B_Im_DFT;
    F_Re_DFT=0;F_Im_DFT=0;
    B_Re_DFT=0;B_Im_DFT=0;

for (u=0; u<w-1; u++)
 for (v=0; v<h-1; v++)
  {
  for (i=0; i<w-1; i++)
   for (j=0; j<h-1; j++)
   {
   F_Re_DFT=F_Re_DFT+(1/(h*w))*(buf[v]*cos(2*pi*(u*i/w+v*j/h)));
   F_Im_DFT=F_Im_DFT+(1/(h*w))*(buf[v]*sin(2*pi*(u*i/w+v*j/h)));
   }
  new_re[v]=(int)F_Re_DFT;
  new_im[v]=(int)F_Im_DFT;
  }

Где buf - обрабатываемое изображение.

Заранее спасибо за любые ответы, советы и рекомендации.
27K
18 июля 2007 года
aush
4 / / 04.06.2007
Что, никто никогда не сталкивался? Классическая задача при обработке изображений, вроде...
7.8K
18 июля 2007 года
Tingo
201 / / 17.05.2007
чесна говоря я даже не понял какой это язык.
VB что-ли....
92
18 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
imho надо было в раздел Графика идти...
443
18 июля 2007 года
REmindER
292 / / 23.03.2003
Цитата: Tingo
чесна говоря я даже не понял какой это язык.
VB что-ли....


Похоже на скрипт(?) MatLab.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог