当前位置:编程学习 > Matlab >>

求用matlab对彩色图片进行滤波的代码。要求如下

S通道用巴特沃斯高通滤波器 V通道用高斯滤波器
追问:
        	
				
做图像增强。刚刚学matlab很多不会的地方真是谢谢您啦~我的qq284676604给我发到q上吧~~
clc;clear all;close all;
%读图像
img=imread('c:\test.bmp');
subplot(121),imshow(img);
%将RGB分量转换成HSI,具体见:http://zhidao.zzzyk.com/question/320254032.html
img_hsi=rgb2hsi(img);
%--------------------------------------------------------------------------
%ln和DFT处理过程
% img_s=fftshift(fft2(log(img_hsi(:,:,2))));
img_s=log(img_hsi(:,:,2));
img_s=img_hsi(:,:,2);
%H 巴特沃斯高通滤波器处理过程
f=double(img_s);     % 数据类型转换,MATLAB不支持图像的无符号整型的计算
g=fftshift(fft2(f));        % 傅立叶变换
[M,N]=size(g);nn=2;% 二阶巴特沃斯(Butterworth)高通滤波器
d0=5;
m=fix(M/2);n=fix(N/2);
for i=1:M
       for j=1:N
           d=sqrt((i-m)^2+(j-n)^2);
           if (d==0)
              h=0;
           else
              h=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数
           end
   img_filter(i,j)=h*g(i,j);
end
end
img_s2=ifft2(ifftshift(img_filter));img_s2=exp(img_s2);img_s2=uint8(real(img_s2));
%--------------------------------------------------------------------------
% img_i=fftshift(fft2(log(img_hsi(:,:,3))));
img_i=log(img_hsi(:,:,3));
img_i=img_hsi(:,:,3);
%高斯滤波器
%将S分量的二维不连续Frourier变换的零频率成分移到频谱的中心
s=fftshift(fft2(img_i));
[M,N]=size(s);                     %分别返回s的行数到M中,列数到N中
n=2;                                  %对n赋初值
%GLPF滤波,d0=5,15,30(程序中以d0=30为例) 
d0=30;                                %初始化d0
n1=floor(M/2);n2=floor(N/2);
for i=1:M 
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);         %点(i,j)到傅立叶变换中心的距离
               h=1*exp(-1/2*(d^2/d0^2));  %GLPF滤波函数
        s(i,j)=h*s(i,j);                   %GLPF滤波后的频域表示
    end
end
img_i2=ifft2(ifftshift(s));img_i2=exp(img_i2);img_i2=uint8(real(img_i2));
%--------------------------------------------------------------------------
newImg(:,:,1)=img(:,:,1);newImg(:,:,2)=img_s2;newImg(:,:,3)=img_i2;
subplot(122),imshow(newImg);
答案:先告诉我做什么用?
其他:用matlab对彩色图片进行滤波的代码 这个就是用一个简单的语句判断他登陆时间与目前的时间间隔要是大于48小时就可以更改数据库记录即可,
具体用JIANGE=DateDiff("H",rs(" P_LastDate"),NOW())这个语句判断JIANGE>48 就执行修改数据的rs("p_online") =0 即可了,你调试一下看看,祝你好运! 

上一个:我的matlab明明不能识别 p=[[1;2][4;3]]这种形式的表示,为什么书上的代码还这么写呢,谢谢啊
下一个:matlab中conv(卷积)函数的C语言实现的源代码?请求大虾帮助。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,