实验二图像的灰度变换增强一、实验目的 1、理解数字图像处理中点运算的基本作用; 2、掌握对比度调整与灰度直方图均衡化的方法。二、实验原理 1 、对比度调整如果原图像 f(x,y) 的灰度范围是[m,M] ,我们希望对图像的灰度范围进行线性调整, 调整后的图像 g(x,y) 的灰度范围是[n,N] ,那么下述变换: ?? nmyxfmM nNyxg?????),(),( 就可以实现这一要求。 MATLAB 图像处理工具箱中提供的 imadjust 函数, 可以实现上述的线性变换对比度调整。 imadjust 函数的语法格式为: J= imadjust(I,[low_in high_in], [low_out high_out]) J= imadjust(I, [low_in high_in], [low_out high_out]) 返回原图像 I 经过对比度调整后的新图像 J 。其中[low_in high_in] 为原图像中要变换的灰度范围, [low_out high_out] 指定了变换后的灰度范围, 灰度范围可以用[] 空矩阵表示默认范围, 默认值为[0, 1](注意:灰度范围只能在 0~1 之间)。例: I= imread(''); J= imadjust(I, [ ], [ ]);% 输出灰度范围为默认范围,即为[0, 1] imshow(I), figure, imshow(J) 不使用 imadjust 函数, 利用 matlab 语言直接编程也很容易实现灰度图像的对比度调整。但运算的过程中应当注意以下问题, 由于我们读出的图像数据一般是 uint8 型,而在 MATLAB 的矩阵运算中要求运算变量为 double 型( 双精度型)。因此读出的图像数据不能直接进行运算, 必须将图像数据转换成双精度型数据。 MATLAB 中提供了这样的图像数据类型转换函数: im2double 函数,其语法格式为: I2= im2double(I1) 该函数将 I1 的各元素除以 255 后转换为 0~1 内的双精度型数据。运算之后的图像数据再显示时可以再转化成 uint8 型,格式为: I3= im2uint8 (I2) 该函数将 I2 的各元素乘以 255 后转换为 0~ 255 内的 uint8 型数据, 其中小于 0 的元素均设置为 0 ,大于 255 的元素均设置为 255 。线性运算示例: K1 =imread('') ; I=im2double(K1); J=I*; K2=im2uint8(J); subplot(1,2,1), imshow(K1) subplot(1,2,2), imshow(K2) 非线性运算示例: K1 =imread(''); I=double( K1 ); Dm=double(max(max( K1 ))); J=( Dm/2)*(1+(1/sin(pi/4))*sin((pi/2)*((I/Dm)-))); K 2=uint8(J); subplot(1,2,1), imshow( K1 ) subplot(1,2,2), imshow( K 2) 注意: 函数 double 、 uint8 与 im2double 、 im2uint8
实验二 图像的灰度变换增强 来自淘豆网m.daumloan.com转载请标明出处.