我用matlab写的同态滤波 对一部分图片全黑 帮我看看哪有问题!

smartnorth 2008-11-29 07:41:05
%同态滤波处理
clc;
clear;
Img =imread('LENA256.bmp'); %读图
%Img =rgb2gray(Img);
%Img =im2uint8(Img);
[M N]=size(Img); %得大小
figure;
imshow(Img); %显示图
Img=double(Img); %转换类型
lnImg = log(Img); %取对数
FImg = fft2(lnImg); %傅立叶变换
P =fftshift(FImg); %将频域原点移到图像中心
for i=1:M
for j=1:N
D(i,j)=((i-M/2)^2+(j-N/2)^2); %点(i,j)到频率平面原点的距离
end
end
c=0.8; %锐化参数,可调
Do=200 ; %一般是方差 (滤波器的高通截止频率)
H=(2.0-0.5)*(1-exp(c*(-D/(Do^2))))+0.5; %滤波器函数
hImg=FImg.*H;
gImg=ifft2(hImg); %逆傅立叶变换
Y=exp(gImg); %取指数
G=real(Y);
figure,imshow(uint8((G)));
imwrite(G,'同态滤波后的图像.bmp','bmp');
...全文
895 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvfuxiang 2009-07-02
  • 打赏
  • 举报
回复
问:hImg=FImg.*H; 这一步运行时出现矩阵维数不匹配的问题。
FImg是M*(N/3)*3的数据,而H是M*N的数据,二者不能点乘。希望得到楼主解答,谢谢!
QQ:383971157
EMAIL:lvfuxiang0708@163.com
smartnorth 2009-04-21
  • 打赏
  • 举报
回复
滤波函数 随便找本图像处理的书就可以找到
最后我下到了一个标准的同态滤波函数!
要就找我
QQ 414538625

ilikegoinghome 2009-03-23
  • 打赏
  • 举报
回复
您好!我想问问您,你的滤波函数是怎么得到的。请指教,不胜感激。QQ:63237369 Email:ilikegoinghome@163.com
qazwsx120 2009-03-09
  • 打赏
  • 举报
回复
取对数时错了改为lnImg = log(1+Img); 应该可以了

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧