130 likes | 138 Views
การปรับปรุงคุณภาพภาพเชิงความถี่ Image Enhancement in Frequency Domain. Image Enhancement in Frequency Domain.
E N D
การปรับปรุงคุณภาพภาพเชิงความถี่Image Enhancement in Frequency Domain
Image Enhancement in Frequency Domain การปรับปรุงคุณภาพภาพเชิงความถี่ คือการแปลงฟูเรียร์ (FourierTransform)ซึ่งเป็นการแปลงเชิงปริพันธ์ (integration) ที่ช่วยให้เราสามารถทำการประมวลผลภาพได้เมื่อไม่สามารถที่จะประมวลผลภาพด้วยวิธีการอื่นๆ สามารถประมวลผลภาพต่างๆ ได้อย่างรวดเร็ว มีประสิทธิภาพดีกว่าตัวกรองเชิงพื้นที่ ที่เป็นเชิงเส้น โดยการใช้ตัวกรองชนิดความถี่ต่ำผ่าน และความถี่สูงผ่านด้วยความแม่นยำสูง การแปลงฟูเรียร์ หมายถึงการแปลงเชิงปริพันธ์ โดยเป็นการเขียนแทนฟังก์ชั่นใดๆ ในรูปของผลบวก หรือปริพันธ์ของฐานที่เป็นฟังก์ชั่นรูปคลื่นไซน์หรือโคไซน์ • การแปลงฟูเรียร์ใน 1 มิติ (The One Dimensional Fourier Transform) • การแปลงฟูเรียร์ใน 2 มิติ (The Two Dimensional Fourier Transform) • ตัวกรองในโดเมนความถี่ (Filtering in the Frequency Domain) • ตัวกรองแบบโฮโมมอร์ฟิก (Homomorphic Filtering)
ตัวกรองในโดเมนความถี่ (Filtering in the Frequency Domain) ก่อนการประมวลผล การแปลงฟูเรียร์ ภาพอินพุต f(x,y) หลังการประมวลผล การแปลงฟูเรียร์กลับ ฟังก์ชั่นการกรอง ภาพเอาต์พุต g(x,y)
ตัวกรองความถี่ต่ำผ่านตัวกรองความถี่ต่ำผ่าน ตัวกรองความถี่ต่ำแผ่นแบบอุดมคติ (Ideal low-pass Filter)เป็นวงจรกรองความถี่ที่จะยอมให้สัญญาณความถี่ต่ำผ่านไปได้ แต่จะทำการลดขนาดของสัญญาณความถี่สูงออกไป โดยจะยอมให้ความถี่ตั้งแต่ 0 Hz จนถึงความถี่คัต-ออฟ (cut-off frequency; fc) วงจรกรองความถี่จะไม่ให้ผ่านไป
ตัวอย่าง 1 (พิมพ์คำสั่งในหน้าต่าง command) f=zeros(256,256) %สร้างแมทริกซ์ขนาด 256*256 f(80:180,80:180)=1; %สร้างแมทริกซ์สีขาวตรงกลางภาพพื้นสีดำ figure,imshow(f); %แสดงรูปสี่เหลี่ยมขาวบนพื้นสีดำ
%ทำการคำนวณ fftและแสดงแมกนิจูด F=fft2(double(f)); %คำสั่งแปลงฟูเรียร์ 2 มิติ figure,imshow(abs(fftshift(F))); %คำสั่งคำนวณค่าแมกนิจูดและเลื่อนค่าแมกนิจูดสูงสุดมาอยู่ตรงกลางภาพและแสดงภาพแมกนิจูด
%สร้างตัวกรองความถี่ต่ำผ่านแบบอุดมคติ%สร้างตัวกรองความถี่ต่ำผ่านแบบอุดมคติ [M N]=size(f); D0=40; % ค่าความถี่คัต-ออฟ สามารถเปลี่ยนค่าตัวเลขได้ u=0:(M-1); v=0:(N-1); dx=find(u>M/2); u(dx)=u(dx)-M; dy=find(v>N/2); v(dy)=v(dy)-N; [V,U]=meshgrid(v,u); D=sqrt(U.^2+V.^2); %สมการตัวกรองความถี่ต่ำผ่านแบบอุดมคติ H=double(D<=D0); %ค่าตัวกรองความถี่ต่ำแบบอุดมคติ
figure, imshow(fftshift(H)); %แสดงภาพที่เลื่อนค่าแมกนิจูดมาอยู่ตรงกลาง figure,mesh(u,v,H); %แสดงภาพ 3 มิติของตัวกรอง
%ทำการกรองภาพด้วยตัวกรองความถี่ต่ำผ่านแบบอุดมคติ และทำการแปลงกลับ FFT G=H.*F; %คูณตัวกรองความถี่ต่ำผ่านแบบอุดมคติเข้ากับภาพดั้งเดิม g=real(ifft2(double(G))); %แปลงกลับ FFT ด้วยคำสั่ง ifft2 figure, imshow(g);
ตัวอย่าง 2 (พิมพ์คำสั่งในหน้าต่าง command) x=imread(reru.jpg); [M N ]=size(x); % หาขนาดภาพ figure(1),imshow(x); %แสดงภาพ ให้สังเกตดูภาพที่ได้ F=fft2(double(x)); %คำสั่งแปลงฟูเรียร์ 2 มิติ figure(x),imshow(abs(fftshift(F))/256); %คำสั่งคำนวณหาค่าแมกนิจูดและเลื่อนค่าแมนนิจูดสูงสุดมาอยู่ตรงกลางภาพและแสดงภาพแมนนิจูดให้สังเกตดูภาพที่ได้ %สร้างตัวกรองความถี่ต่ำผ่านแบบอุดมคติ D0=40; %ค่าความถี่คัต-ออฟ u=0:(M-1);v=0:(N-1); dx=find(u>M/2);
u(dx)=u(dx)-M; dy=find(v>N/2); v(dy)=v(dy)-N; [V,U] = meshgrid(v,u); % สร้างกราฟ D=sqrt(U.^2+V.^2); H=double(D<=D0); %ตัวกรองความถี่ต่ำผ่านแบบอุดมคติ figure(3),imshow(fftshift(H)); % %ทำการกรองภาพด้วยตัวกรองความถี่ต่ำผ่านแบบอุดมคติ และทำการแปลงกลับ FFT G=H.*F; G=real(ifft2(double(G))); Figure(4),imshow(g); %แสดงภาพ ให้สังเกตภาพที่ได้