有谁编过同态滤波的程序啊?
如题,通过同时进行灰度范围的压缩和对比度增强来改进一幅图象的外观主要对matlab进行图象处理不熟,老板布置的作业急需完成,哪位仁兄编过给小弟看看,不胜感激! 一个同态滤波的例子:
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
回复 #2 花如月 的帖子
谢谢!% 设置同态滤波器
b = remez(21,,);
= freqz(b,1,128,'whole');
HFilt = ftrans2(b);
这一段还是看不懂,参数设置方面也不懂~ remez是一个老的设计fir滤波器的指令,可以用 firpm代替。既然是做滤波的,就看一下帮助文档吧。
回复 #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('处理后的图');
运行不成功,处理后图片变成全黑的了~麻烦花大哥再看看
回复 #5 wander1984 的帖子
第二句改成Img = double(Img);倒数第四句改成subplot(2,1,1),imshow(uint8(Img)) 跪求!!!!!用emd分解完之后再同态滤波的程序
页:
[1]