调整亮度/对比度
线性函数
结论:如果一幅图像集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来扩展(斜率>1)物体的灰度区间以改善图像;同样,如果图像的灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。
分段线性函数的作用:实际上是增强了原图各部分的反差,即增加图像中感兴趣的灰度区域,相对抑制那些不感兴趣的灰度区域。
非线性函数
内置函数
Matlab提供了stretchlim()函数,可以自动计算图像灰度值的最小值和最大值构成的区间,即需调整的范围。
直方图
灰度统计直方图
直方图修正
直方图均衡化
直方图规定化
理想情况下,直方图均衡化实现了图像灰度的均衡分布,对提高图像对比度、提升图像亮度具有明显的作用。在实际应用中,有时并不需要图像的直方图具有整体的均匀分布,而是希望直方图与规定要求的直方图一致,这就是直方图规定化。它可以人为地改变原始图像直方图的形状,使其成为某个特定的形状,是用于产生处理后有特殊直方图的图像处理方法。
在Matlab中没有直接实现直方图规定化的函数。但是可以通过imhist和histeq两个函数的结合使用来实现。
I=imread('pout.tif');
subplot(2,2,1),imshow(I);
title('模板图像');
subplot(2,2,2),imhist(I);
title('模板图像的直方图');
J=imread('tire.tif');
I_M=imhist(I);
K=histeq(J,I_M);
subplot(2,2,3),imshow(K);
title('规定化后的图像');
subplot(2,2,4),imhist(K);
彩色图像点运算
线性/非线性变换
sourceImage=im2double(imread('landscape.jpg'));
J=rgb2hsi(sourceImage);%RGB空间转换到HSI空间
H=J(:,:,1); %提取色调分量
S=J(:,:,2); %提取饱和度分量
I=J(:,:,3); %提取亮度分量
%利用灰度变换,自动调整亮度分量的灰度范围
M=stretchlim(I);
I_enhancing1=imadjust(I,M,[0 1],0.4); %亮度增大
enhancingImage1=cat(3,H,S,I_enhancing1);%三分量合成
rgb1=hsi2rgb(enhancingImage1);%HSI空间转换到RGB空间
I_enhancing2=imadjust(I,M,[0 1],4); %亮度降低
enhancingImage2=cat(3,H,S,I_enhancing2);%三分量合成
rgb2=hsi2rgb(enhancingImage2);%HSI空间转换到RGB空间
subplot(1,3,1);imshow(sourceImage);title('原始图像');
subplot(1,3,2);imshow(rgb1);title('HSI空间亮度增大');
subplot(1,3,3);imshow(rgb2);title('HSI空间亮度降低');
直方图均衡化
sourceImage=im2double(imread('people.jpg'));
J=rgb2hsi(sourceImage);
H=J(:,:,1);
S=J(:,:,2);
I=J(:,:,3);
%利用直方图均衡化,调整亮度分量的灰度范围
I_enhancing=histeq(I);
enhancingImage=cat(3,H,S,I_enhancing);
rgb=hsi2rgb(enhancingImage);
subplot(1,2,1);imshow(sourceImage);title('原始图像');
subplot(1,2,2);imshow(rgb);title('直方图均衡化后图像');
直方图规定化
sourceImage=im2double(imread('people.jpg'));
J=rgb2hsi(sourceImage);
H=J(:,:,1);%原始图像的色调分量
S=J(:,:,2);%原始图像的饱和度分量
I=J(:,:,3);%原始图像的亮度分量
%利用直方图规定化,设置亮度分量的灰度范围
object_M = im2double(imread('template.jpg'));
J_M=rgb2hsi(object_M);
H_M=J_M(:,:,1);%模板图像的色调分量
S_M=J_M(:,:,2);%模板图像的饱和度分量
I_M=J_M(:,:,3);%模板图像的亮度分量
I_M_imhist = imhist(I_M);%模板图像的直方图
I_enhancing= histeq(I,I_M_imhist);%直方图规定化处理
enhancingImage=cat(3,H,S,I_enhancing);
rgb=hsi2rgb(enhancingImage);
subplot(1,3,1);imshow(sourceImage);title('原始图像');
subplot(1,3,2);imshow(object_M);title('模板图像');
subplot(1,3,3);imshow(rgb);title('直方图规定化后图像');