wander1984 发表于 2007-7-21 17:23

有谁编过同态滤波的程序啊?

如题,通过同时进行灰度范围的压缩和对比度增强来改进一幅图象的外观
主要对matlab进行图象处理不熟,老板布置的作业急需完成,哪位仁兄编过给小弟看看,不胜感激!

花如月 发表于 2007-7-21 18:01

一个同态滤波的例子:
Img = imread('light.jpg');
Img = rgb2gray(Img);
% log对数
lnImg = log(double(Img));
% 2DFFT变换
FImg = fft2(lnImg);
% 设置同态滤波器
b = remez(21,,);
= freqz(b,1,128,'whole');
HFilt = ftrans2(b);
% 滤波
hImg = filter2(HFilt,FImg,'same');
% 2DiFFT变换
gImg = ifft2(hImg);
% 取指数
Img1 = uint8((exp(abs(gImg))));
figure,imshow(Img1);
title('处理后的图');
程序来源:http://bbs.matwav.com/post/view?bid=6&id=676960

wander1984 发表于 2007-7-22 15:42

回复 #2 花如月 的帖子

谢谢!
% 设置同态滤波器
b = remez(21,,);
= freqz(b,1,128,'whole');
HFilt = ftrans2(b);

这一段还是看不懂,参数设置方面也不懂~

花如月 发表于 2007-7-22 15:57

remez是一个老的设计fir滤波器的指令,可以用 firpm代替。既然是做滤波的,就看一下帮助文档吧。

wander1984 发表于 2007-7-24 09:25

回复 #4 花如月 的帖子

%同态滤波
Img = imread('rice.png');
Img = im2double(Img);
% log对数
lnImg = log(Img);
% 2DFFT变换
FImg = fft2(lnImg);
% 设置同态滤波器
b = remez(21,,);
= freqz(b,1,128,'whole');
HFilt = ftrans2(b);
% 滤波
hImg = filter2(HFilt,FImg,'same');;
% 2DiFFT变换
gImg = ifft2(hImg);
% 取指数
Img1 =uint8((exp(abs(gImg))));
subplot(2,1,1),imshow(Img)
title('原图');
subplot(2,1,2),imshow(Img1)
title('处理后的图');



运行不成功,处理后图片变成全黑的了~麻烦花大哥再看看

花如月 发表于 2007-7-24 22:29

回复 #5 wander1984 的帖子

第二句改成Img = double(Img);
倒数第四句改成subplot(2,1,1),imshow(uint8(Img))

李文鹏 发表于 2012-4-9 10:19

跪求!!!!!用emd分解完之后再同态滤波的程序
页: [1]
查看完整版本: 有谁编过同态滤波的程序啊?