[其他] 影像弱化的頻域問題
最近在學習用MATLAB處理影像
在做影像弱化的時候遇到一些問題想請教大家
我想把一個影像讀入後做FFT轉換,在頻域和degradation function相乘
再把相乘後的影像做反FFT轉換,得到一個比較模糊的影像
degration function:
http://i.imgur.com/I8a2LUP.png
以下是我的主程式:
clear
clc
close all
image_rgb = imread('original.png'); % read the image
image_gray = rgb2gray(image_rgb); % transform RGB image into grayscale
fp = motion(image_gray); %degradation
figure,fftshow(fp, 'abs'); % show the image
title('After');
函數motion就是做影像處理的部分:
function fp = motion(f)
% (M,N) -- Size of the image
[M,N] = size(f);
[V,U] = meshgrid(1:N, 1:M);
%trans the (M/2, N/2) to the origin(0,0)
U = U - floor( M/2 );
V = V - floor( N/2 );
c = pi*(0.2*U+0.1*V);
H = (1./c).*sin(c).*exp(-1j*c);
H = fftshift( H );
F = fftshift(fft2(f));
Fp = H.*F;
fp = real(ifft2(Fp));
fp = im2uint8( mat2gray(fp) );
函數fftshow則是參照手邊書籍中提供的方式顯示DFT轉換結果:
function fftshow(f, type)
if nargin<2,
type='log';
end
if (type=='log')
fl = log(1+abs(f));
fm = max(fl(:));
imshow(im2uint8(fl/fm))
elseif (type=='abs')
fa = abs(f);
fm = max(fa(:));
imshow(fa/fm)
else
error('TYPE must be abs or log.');
end;
原圖是這樣
http://i.imgur.com/Hr4ogpo.png
頻域處理相乘後的DFT是這樣
http://i.imgur.com/ZYydO35.png
可是經過反FFT轉換以後變成一張全黑的圖
看起來像是反傅立葉轉換時出了問題
試了好久都沒辦法成功
請問是哪裡寫的怪怪的嗎QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.204.44.70
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1480877670.A.9DA.html
→
12/05 11:44, , 1F
12/05 11:44, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章