matlab图像增强算法
1. Matlab怎样把一个彩色图像进行简单的增强
增强图象中的有用信息,它可以是一个失真的过程,其目的是要增强视觉效果。将原来不清晰的图像变得清晰或强调某些感兴趣的特征,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果的图像处理方法。
图像增强按所用方法可分成频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。具有代表性的空间域算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。
图像增强的目的是改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,扩大图像中不同物体特征之间的差别,满足某些特殊分析的需要。其方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。基于空域的算法处理时直接对图像灰度级做运算基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。
基于空域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。
2. 有谁matlab写过基于自适应滤波的Retinex图像增强算法
根据最后一个公式计算w(x,y), 实际上就是计算梯度水平(水平和垂直方向两个方向综合)
I = imread('test3.jpg'); %读入图象
subplot(121);imshow(I);
I = double(rgb2gray(I));
[m,n]=size(I);
H1 = [-1 -2 -1
0 0 0
1 2 1];
H2 = [-1 0 1
-2 0 2
-1 0 1];
w0 = (abs(conv2(I,double(H1),'same')) + abs(conv2(I,double(H1),'same')))/2+ones(m,n);
subplot(122);imshow(uint8(w0));
w = 1./w0;
3. 求解下面一段MATLAB代码,关于直方图均衡化的图像增强算法。
%读图像
img=imread('D:\我的文档\桌面\10096009_0762641.JPG');
subplot(121),imshow(img);
%将RGB分量转换成HSI,具体见:http://..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);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=5; % 2-grade Butterworth highpass filter
d0=15; % 15,30,80其中以15为例
m=fix(M/2); n=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % filter transform function
%h=1./(1+(d./d0).^(2*n))
%h=exp(-(d.^2)./(2*(d0^2)));
result(i,j)=(1-h)*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
img_s2=uint8(real(J1));
%--------------------------------------------------------------------------
% 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);