Выход гомоморфного фильтра не соответствует действительности - PullRequest
0 голосов
/ 08 июня 2019

У меня есть изображение в формате TIFF, на котором я хочу запустить гомоморфный фильтр.

Формат TIFF здесь не поддерживается, я загрузил его здесь .

Мой код:

clc
clear
%
img= imread('pet.tif');
img = im2double(img);
[p,q] = size(img);
m = 2*p;
n = 2*q;
img2 = log(img);
img3 = zeros(m,n);
img3(1:p,1:q)=img2;
for i=1:m
    for j=1:n
        img3(i,j) = img3(i,j)*((-1)^(i+j));
    end
end


F = fft2(img3);

Landa_H=3;
Landa_L=0.4;
c = 5;
D0=20;
[H_H]=Homomorphic(m,n,D0,Landa_H,Landa_L,c);


Y = ifft2(H_H.*F);


for i=1:m
    for j=1:n
        Y(i,j) = Y(i,j)*((-1)^(i+j));

    end
end
img_filter =exp(Y(1:p,1:q));


%
figure(1);
subplot(2,2,1);
imshow(img);
title('Orginal image');
subplot(2,2,2);
imshow(F);
title('DFT image');
subplot(2,2,3);
imshow(H_H);
title('Homomorphic Filter');
subplot(2,2,4);
imshow(img_filter);
title('Filtered image with Homomorphic');

 figure(2);
 imshow(H_H.*F);

И моя гомоморфная функция здесь:

  function [ H ] = Homomorphic( m,n,D0,Landa_H,Landa_L,c)
    H = zeros(m,n);
    for i=1:m
        for j=1:n
            x=[m/2,n/2; i,j];
            D=pdist(x,'euclidean');
            H(i,j)=((Landa_H - Landa_L)*(1-(exp(-c*((D^2)/(D0^2))))))+Landa_L;
        end
    end
end

Вот результат, который я получаю:

enter image description here

Понятия не имею, где я ошибаюсь, что яне получить правильный ответ.Кто-нибудь может дать мне какую-либо идею?

Я не знаю, как, но без каких-либо изменений я запускаю его, и теперь я получаю сообщение об ошибке:

Subscripted assignment dimension mismatch.
Error in Main (line 11)
img3(1:p,1:q)=img2;
...