1 空间域处理介绍
- 空间域:指图像平面本身,在空间域处理图像就是直接对图像像素进行处理。
2 亮度变换
- 由于亮度变换函数仅作用于图像的亮度值r,而与坐标(x,y)无关,所以亮度变换函数可以表示为:s=T(r)。
- 语言
MATLAB
,代码:g = imadjust(I, [low_in high_in], [low_out high_out], gamma)
,也就是将[low_in high_in]的亮度值映射到[low_out high_out]区间,gamma用来指定变换曲线的形状(>1,曲线下凸,也就是将亮度映射到较暗的区域,类似于指数函数;=1,线性;<1,曲线上凸,也就是将亮度映射到较亮的区域,类似于对数函数)。 - 示例1:设置映射区间
I = imread('breast.jpg'); subplot(131), imshow(I), title('原图'); I1 = imadjust(I, [0 1], [1 0]); subplot(132), imshow(I1), title('黑白反转'); I2 = imadjust(I, [0.5 0.75], [0 1]); subplot(133), imshow(I2), title('加强病发位置');
- 示例2:操作曲线形状
I = imread('city.jpg'); I = rgb2gray(I); subplot(221), imshow(I); I1 = imadjust(I, [], [], 4); subplot(222), imshow(I1); subplot(223), imhist(I); subplot(224), imhist(I1);
3 直方图处理
3.1 绘制
-
描述了各个灰度级的像素个数,正如上图所展示的图像。
-
代码:
imhist(I, b)
,b为灰度级个数,默认为256。 -
示例:除了自带的imhist,还有其他绘制方法,如下所示:
I = imread('city.jpg'); I = rgb2gray(I); h = imhist(I); subplot(221), imhist(I), title('imhist'); subplot(222), bar(1:10:256, h(1:10:256)), title('bar'); subplot(223), stem(1:10:256, h(1:10:256), 'fill'), title('stem'); axis([0 255 0 4000]); subplot(224), plot(h), title('plot'); axis([0 255 0 4000]);
3.2 直方图均衡化
-
通过变换函数,将整幅图像的灰度较为均衡地分布在[0 1]区间,拥有较高的对比度,使得图像更为清晰。其实上面操作变换函数曲线也是在做均衡化,但是效果没那么明显。
-
代码:
histeq(I)
-
示例:
I = imread('rice.jpg'); I = rgb2gray(I); I1 = histeq(I); subplot(221), imshow(I), title('原图'); subplot(222), imshow(I1), title('均衡化结果'); subplot(223), imhist(I), title('原直方图'); subplot(224), imhist(I1), title('均衡化直方图');
3.3 直方图规定化
- 直方图均衡化生成了自适应的变换函数,而如果想要指定变换函数,将图像变换为需要的效果,就是直方图规定化。
- 代码:
histeq(I, hspec)
,hspec可以来自其他图像通过imhist
生成的直方图。