图形增强算法并不能增加原图像得信息,而只是通过某种技术手段是原始图像中某一部分更加突出显示出来。至今图像增强理论并无一权威的定义,它的基本方法主要包含图像增强的空间域处理和图像增强的频率域处理。前者是直接在图像像素的空间进行处理,后者是通过傅里叶变换到频率域进行处理。
1.图像增强的空间域处理
图像处理的实质就是采用不同的算法对矩阵进行变换。
1.1图像增强的点运算
图像增强的点运算,顾名思义,就是对图像中的像素点进行操作。对图像做点运算时,各像素之间没有关系,即对像素的处理是独立进行的。
Matlab工具箱中并没有直接定义对图像进行直接进行点运算的函数,而是点运算过程集成在某些图像处理函数中,下面就会接触到。
1.1.1全域线性变换
全域变换,就是对图像的每一个像素进行相同的函数变换。线性变换,简而言之,就是变换前后的像素满足线性关系。(由于是对灰度图像的处理,图像矩阵的每一点的值代表其灰度级)
(1)一般全域线性变换
(a)一般表达式:
(b)变换前后,图像灰度级变换图示:
其中,[a,b]是原图像f(x,y)的灰度级范围,[c,d]是变换后图像g(x,y)的灰度级范围。
(c)举例
代码:
%(1)全域线性变换
%原图像的灰度范围[A,B],变换后图像的灰度范围[C,D]
%上半部分显示原图像及其直方图
mImg = imread('C:\Users\林露露\Desktop\数字图像处理\数字图像学习\图像增强\云山.bmp');
subplot(2,2,1);
imshow(mImg);
title('The original image');
subplot(2,2,2);
imhist(mImg);
title('The histogram of the original image');
%下半部分显示全域线性变换后的图像及其直方图
mImg = double(mImg);
A = min(min(mImg));
%为何是两个min呢?
%那是因为图像矩阵是二维的,一个min只能求得一个数组,数组元素是原二维数组中每一列的最小值
B = max(max(mImg));
C = 0.0;
D = 255.0;
mImg1 = (D - C)/(B - A) * (mImg - A) + C;
mImg1 = uint8(mImg1);
subplot(2,2,3);
imshow(mImg1);
title('The image after the Full-domain linear transformation');
subplot(2,2,4);
imhist(mImg1);
title('The histogram of the later image');
运行截图:
(2)反相变换
反相变换就是将图像的每一像素点的灰度级取反,即g(x,y) = 255 - f(x,y)。
举例如下
代码:
%(1)反相变换
%上半部分显示原图像及其直方图
mImg = imread('C:\Users\林露露\Desktop\数字图像处理\数字图像学习\图像增强\云山.bmp');
subplot(2,2,1);
imshow(mImg);
title('The original image');
subplot(2,2,2);
imhist(mImg);