Matlab 이미지 처리 "주파수 필터"(2D FFT)
이미지 처리에는 다양한 방법이 있지만, 이 기사에서 소개하는 것은 주파수 필터 처리입니다.
원래 모르겠어! 라고 사람은 이쪽의 기사가 참고가 될까 생각합니다.
htps //w w.ゔぃs こーち ch. 코 m / 네 ws 파페 r / 코 엠 / 싶은 l20 /
matlab에서 구현할 수 있었으므로 소개합니다.
이번에 구현한 것은 로우 패스 필터입니다. 즉 고주파 노이즈(점과 같이 좁은 영역에서의 노이즈)를 제거합니다.
출력
왼쪽이 필터 전, 오른쪽이 필터 후(전달하기 어려운…)
세 가지 함수로 정리했으므로,
%%% 여기에서 아래를 copipe%%%이하를 copipe하면 바로 사용할 수 있다고 생각합니다.
함수 설명
①function [pic2] = FFTfilter(pic1,Gain)
②function[pic2] = OddEsc(pic1)
③function [pic2] =PicConv(pic1)
①은 이름대로 FFT 계산을 하는 개소입니다.
계산의 편의상, 이미지의 사이즈가 홀수였던 경우 픽셀을 추가해 짝수로 하고 있습니다. 그 처리를 함수②에 던지고 있습니다.
주파수 영역의 트리밍을 할 때, 화상의 사분면을 반대로 하면 편리함이 좋으므로, ③에서 그 처리를 하고 있습니다.
참고:
니시즈미 공방님( htps : // / l hr thm. 조호.んふぉ / 이마 게 p 로세신 g / 후 우리 r t 란 s 후 rm / )
편리한 곳
색상, 흑백에 관계없이 변환할 수 있습니다.
FFTGain(0~1)의 조정(0에 가까울수록 필터가 강해집니다.)를 할 수 있습니다.
단점
하이 패스 필터, 밴드 패스 필터의 능력은 없습니다.
만약 추가한다면
if i < sz1/2-a || i > sz1/2+a || j < sz2/2-b || j > sz2/2+b
의 부분이 주파수 트리밍에 대응하고 있으므로 여기의 조건을 바꾸어 주십시오.
이미지 사이즈가 홀수였을 때 추가하는 처리를 하기 때문에 우단(혹은 하단)의 1열에 휘도 제로의 영역이 생기는 일이 있습니다.
아래 샘플 코드
%%%画像の読み込み%%%
test = imread("C:\hogehoge\test.jpg");
%%%フィルタ処理(0.1はフィルタ透過率)%%%
FFTGain = 0.1
test2 = FFTfilter(test,FFTGain);
%%%出力%%%
subplot(1,2,1)
imshow(test)
subplot(1,2,2)
imshow(test2)
imwrite(test2,"C:\hogehoge\test2.jpg")
%%%ここから下をコピペする%%%
function [pic2] = FFTfilter(pic1,Gain)
pic1 = OddEsc(pic1);
sz1 = size(pic1,1);
sz2 = size(pic1,2);
sz3 = size(pic1,3);
ftest=fft2(pic1);
ftest=PicConv(ftest);
a = ceil(sz1*Gain);
b = ceil(sz2*Gain);
for k =1:sz3
for j=1:sz2
for i=1:sz1
if i < sz1/2-a || i > sz1/2+a || j < sz2/2-b || j > sz2/2+b
ftest(i,j,k) = 0;
end
end
end
end
ftest = PicConv(ftest);
pic2 = real(ifft2(ftest))/255;
end
function[pic2] = OddEsc(pic1)
sz1 = size(pic1,1);
sz2 = size(pic1,2);
sz3 = size(pic1,3);
if rem(sz1,2)==1
sz1 = sz1+1;
pic1(sz1,sz2,sz3) = 0;
end
if rem(sz2,2)==1
sz2 = sz2+1;
pic1(sz1,sz2,sz3) = 0;
end
pic2 = pic1;
end
function [pic2] =PicConv(pic1)
a = size(pic1,1);
b = size(pic1,2);
c = size(pic1,3);
pic2 = zeros(a,b,c);
pic2(1:a/2,1:b/2,:) = pic1(a/2+1:a,b/2+1:b,:);
pic2(a/2+1:a,1:b/2,:) = pic1(1:a/2,b/2+1:b,:);
pic2(1:a/2,b/2+1:b,:) = pic1(a/2+1:a,1:b/2,:);
pic2(a/2+1:a,b/2+1:b,:) = pic1(1:a/2,1:b/2,:);
end
간섭계의 간섭 줄무늬 노이즈 제거 등에 사용해 보십시오. 그럼.
Reference
이 문제에 관하여(Matlab 이미지 처리 "주파수 필터"(2D FFT)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NagayamaT/items/ec4cf5ff45dc2378f279텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)