У меня есть изображение в формате 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
Вот результат, который я получаю:
Понятия не имею, где я ошибаюсь, что яне получить правильный ответ.Кто-нибудь может дать мне какую-либо идею?
Я не знаю, как, но без каких-либо изменений я запускаю его, и теперь я получаю сообщение об ошибке:
Subscripted assignment dimension mismatch.
Error in Main (line 11)
img3(1:p,1:q)=img2;