У меня есть шумное изображение, которое я пытаюсь очистить с помощью фильтра нижних частот (код ниже, изменен от here). Изображение, которое я получаю в результате, по существу идентично тому, которое я дал в качестве ввода.Фильтр нижних частот не работает
Я не эксперт, но мой вывод заключается в том, что входное изображение настолько шумно, что шаблоны не найдены. Вы согласны? Есть ли у вас предложение о том, как интерпретировать результат?
Результат от кода:
Входное изображение:
Код:
clear; close all;
frame = 20;
size_y = 512; % This is actually size_x
size_x = 256; % This is actually size_y
roi=5;thresh=100000;
AA = imread('image.png');
A = zeros(size_x, size_y);
A = AA(1:size_x, 1:size_y);
A(isnan(A)) = 0 ;
B = fftshift(fft2(A));
fabs = abs(B);
figure; imshow(B);
local_extr = ordfilt2(fabs, roi^2, ones(roi)); % find local maximum within 3*3 range
result = (fabs == local_extr) & (fabs > thresh);
[r, c] = find(result);
for i=1:length(r)
if (r(i)-128)^2+(c(i)-128)^2>thresh % periodic noise locates in the position outside the 20-pixel-radius circle
B(r(i)-2:r(i)+2,c(i)-2:c(i)+2)=0; % zero the frequency components
end
end
Inew=ifft2(fftshift(B));
figure;
subplot(2,1,1); imagesc(A), colormap(gray); title('Original image');
subplot(2,1,2);imagesc(real(Inew)),colormap(gray); title('Filtered image');
Не копаясь в изображении, кажется, что либо частота среза фильтра, либо амплитуда отсечки не «захватывают» высокочастотный шум на вашем входе. Попробуйте изменить частоту среза. –
Спасибо Карл. У меня тоже была такая же идея; Я играл со значениями «roi» и «threshold», но мне не удалось получить более значимый результат. –
Какие шаблоны вы специально ищете? Круги? Любой объект? . Посмотрев на входное изображение, ясно, что одна ключевая проблема заключается в том, что он слишком узкий, вы можете его выравнивать, прежде чем приступать к процессу для дальнейшей обработки. – KillaKem