原画像のノイズ、信号の振幅を維持した周波数フィルタを行う方法
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
以下のプログラムを組んでイメージの周波数フィルタを行っています。
周波数フィルタ事体は問題なく動作していますが、フィルタ後の出力された時に原画像のノイズ、信号の振幅を維持出来ません。
これを維持したまま周波数フィルタを行う事は難しいのでしょうか?
周波数領域におけるマスク処理
% 画像の読み込み
img=imread('C:/',"bmp");
img2=imread('c:/','bmp');
[a,b]=size(img);
 % 画像に対してFFT
 J= fft2(img); %画像に対して 2次元FFT (周波数領域 0 ~ 2*pi)
 J2=fft2(img2);
 J = fftshift(J); % 周波数領域を-pi~piとする (DCを中央にする)
 J2=fftshift(J2);
 %figure(1);
 imshow(20*log10(abs(J)),[]) % 画像の振幅スペクトル表示
 %figure(2);
 %imshow(20*log10(abs(J2)),[])
 % フィルタマスクの作成
 [f1,f2] = freqspace([a b],'meshgrid'); % 画像FFT分の周波数領域メッシュを作成
 r = sqrt(f1.^2 + f2.^2); % DCからの距離を求める
 Hd = ones(a,b);
 LHd= ones(a,b);
 R=0.08;%フィルタマスクの半径
 %Hd((r<0.1) | (r>0.5)) = 0; % バンドパスフィルタ (切り替え)
 LHd(r>R) = 0; % ローパスフィルタ (切り替え)
 Hd(r<R) = 0;%ハイパスフィルタ(切り替え)
 %figure(3);
 mesh(f1,f2,Hd) % 周波数領域のマスクを表示
 %figure(4)
 %mesh(f1,f2,LHd)
 filtered_J = J.*Hd; % ハイパスフィルタ処理 (周波数領域)
 filtered_J2= J2.*Hd;
 Lfiltered_J = J.*LHd; %ローパスフィルタ処理 (周波数領域)
 Lfiltered_J2= J2.*LHd;
 filtered_J = ifftshift(filtered_J); % 周波数領域を 0 ~ 2*pi に戻す
 filtered_J2=ifftshift(filtered_J2);
 Lfiltered_J = ifftshift(Lfiltered_J); % 周波数領域を 0 ~ 2*pi に戻す
 Lfiltered_J2=ifftshift(Lfiltered_J2);
 K = ifft2(filtered_J); % IFFT処理で空間領域へ変換
 K2= ifft2(filtered_J2);
 L=ifft2(Lfiltered_J);
 L2=ifft2(Lfiltered_J2);
 [kmin,I]=min(K,[],'all');
 [r,c]=ind2sub([a b],I);
 newK=K+abs(min(K,[],"all"));%画像表示の為に最小値0、最大値255になる様に変更
 newK=newK./max(newK,[],"all");
 newK2=K2+abs(min(K2,[],"all"));
 newK2=newK2./max(newK2,[],"all");
 newL=L+abs(min(L,[],"all"));
 newL=newL./max(newL,[],"all");
 newL2=L2+abs(min(L2,[],"all"));
 newL2=newL2./max(newL2,[],"all");
figure(5),imshow(K,[]) % フィルタ後の画像表示
figure(6),imshow(L,[])
figure(7),imshow(K2,[])
figure(8),imshow(L2,[])
imwrite(newK,sprintf('c:/',R))
 imwrite(newL,sprintf('c:/',R))
 imwrite(newK2,sprintf('c:/',R))
 imwrite(newL2,sprintf('c:/',R))
0 comentarios
Respuestas (0)
Ver también
Categorías
				Más información sobre イメージのフィルター処理 en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!