MATLAB图像运算笔记
MATLAB图像运算是数字图像处理中的一种重要技术,主要包含点运算和代数运算。点运算是指对图像的每一个像素点进行运算,从而实现图像的灰度变换、对比度增强等功能。
一、图像的点运算
点运算也叫做对比度增强、对比度拉伸或者灰度变换。其原理是通过图像中每一个像素点的灰度值进行运算。点运算的公式为:
g(x,y) = f(f(x,y))
其中,f(x,y)是原图像,g(x,y)是处理后的图像,f表示点运算的关系函数。
1. 线性灰度变换
线性灰度变换是指通过将原图像的灰度值映射到新的灰度值范围内,实现图像的对比度增强和灰度变换。MATLAB中使用imadjust函数实现线性灰度变换。imadjust函数的格式为:
J = imadjust(I,[low_in;high_in],[low_out;high_out],gamma)
其中,I是原图像,J是处理后的图像,[low_in;high_in]是原图像中要变化的灰度范围,[low_out;high_out]是变换后的灰度范围,gamma是图像I成图像J时曲线的形状。
gamma的值影响着图像的对比度增强效果。如果gamma小于1,映射加权到较高的输出值,图像变亮;如果gamma大于1,映射加权到较低的输出值,图像变暗。
例如:
I = imread('peppers.png');
将图像数据分别赋值给R、G、B,分别将原图变成单色图像:
R(:,:,2) = 0;
R(:,:,3) = 0;
R1 = imadjust(R,[0.5 0.8],[0 1],0.5);
G = I;
G(:,:,1) = 0;
G(:,:,3) = 0;
G1 = imadjust(G,[0 0.3],[0 1],0.5);
B = I;
B(:,:,1) = 0;
B(:,:,2) = 0;
B1 = imadjust(B,[0 0.3],[0 1],0.5);
求变换后的RGB图像:
I1 = R1 + G1 + B1;
显示图像:
subplot(421),imshow(R);
subplot(422),imshow(R1);
subplot(423),imshow(G);
subplot(424),imshow(G1);
subplot(425),imshow(B);
subplot(426),imshow(B1);
subplot(427),imshow(I);
subplot(428),imshow(I1);
2. 分段线性灰度变换
分段线性灰度变换是指将图像的灰度值分成多个段,然后对每个段进行线性变换,以达到突出图像中感兴趣的目标或者灰度空间的目的。例如:
J = imadjust(I,[0 0.3; 0.5 0.8],[0 0.5; 0.5 1],0.5);
其中,I是原图像,J是处理后的图像,[0 0.3; 0.5 0.8]是原图像中要变化的灰度范围,[0 0.5; 0.5 1]是变换后的灰度范围,0.5是图像I成图像J时曲线的形状。