基于matlab的空域变换增强
图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。
在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。
1灰度求反
(1)基本原理
灰度求反即将原图像的灰度值进行翻转,即把图像中的黑色区域变成白色区域,把白色区域变成黑色区域。具体的变换就是将图像中每个像素的灰度值根据变换曲线进行映射。这方法比较适用于增强嵌入图像暗色区域的白色或灰色细节。
(2)matlab代码
I= imread('1.jpg');
im1= rgb2gray(I);
subplot(121),imshow(im1),title('1');
f1=200;g1=255;k=g1/f1;
[m,n]=size(im1),im2=double(im1);
for i=1:m
for j=1:n
f=im2(i,j);
g(i,j)=0;
if(f>=0)&(f<=f1)
g(i,j)=g1-k*f;
else
g(i,j)=0;
end
end
end
subplot(122),imshow(mat2gray(g)),title('1')
[g w]=size(mat2gray(g));
L=imresize(mat2gray(g),[floor(g/2)floor(w/2)]);
L=imresize(L,[g w]);
M=im2uint8(mat2gray(g));
N=im2uint8(L);
B=8;
MAX=2^B-1;
MES=sum(sum((M-N).^2))/(g*w);
PSNR=20*log10(MAX)/sqrt(MES)
2 直方图处理
2.1直方图均衡化
(1)基本原理
直方图均衡化是指对像素多的进行扩展,对像素少的进行缩减,其基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而达到增强图象整体对比度的效果。直方图均衡化从数学角度上就是找到一个函数能够实现转换后的直方图均衡化。
(2)matlab代码
I= imread('1.jpg');
H= rgb2gray(I);
A1=histeq(H);%Ö±·½Í¼¾ùºâ»¯
subplot(121);imshow(uint8(H));title('1');%ÏÔʾÔʼ»Ò¶ÈͼÏñ
subplot(122);imshow(uint8(A1));title('2');%ÏÔʾ´¦ÀíºóµÄͼÏñ
figure
subplot(121);imhist(H,64);title('3');%ÏÔʾÔʼ»Ò¶ÈͼÏñµÄÖ±·½Í¼
subplot(122);imhist(A1,64);title('4')%ÏÔʾ´¦ÀíºóµÄÖ±·½Í¼
[g w]=size(A1);
L=imresize(A1,[floor(g/2)floor(w/2)]);
L=imresize(L,[g w]);
M=im2uint8(A1);
N=im2uint8(L);
B=8;
MAX=2^B-1;
MES=sum(sum((M-N).^2))/(g*w);
PSNR=20*log10(MAX/sqrt(MES))
2.2直方图规定化
(1)基本原理
上述的直方图均衡化增强方法具有自动增强整个图像对比度等优点,但同时也具有具体效果不易控制,处理的结果总是得到全局均衡化的直方图的缺点。实际中有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值方位内的对比度。因此需要对直方图均衡的方法进行改进,这时就可以用比较灵活的直方图规定化方法,一般来说可以获得更好的效果。直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。直方图规定化是用于产生处理后有特殊直方图的图像方法。
(2)matlab代码
I= imread('1.jpg');
H= rgb2gray(I);
hgram=ones(1, 256);
A2=histeq(H, hgram); subplot(121);imshow(uint8(H));title('1'); subplot(122);imshow(uint8(A2));title('2');
figure
subplot(121);imhist(H);title('3’)%subplot(122);imhist(A2);title('4');
[g w]=size(A2);
L=imresize(A2,[floor(g/2)floor(w/2)]);
L=imresize(L,[g w]);
M=im2uint8(A2);
N=im2uint8(L);
B=8;
MAX=2^B-1;
MES=sum(sum((M-N).^2))/(g*w);
PSNR=20*log10(MAX)/sqrt(MES)