数字图像处理实验二图像灰度变换..doc
文本预览下载声明
实验二 图像灰度变换实验
实验目的
熟悉亮度变换函数的使用
熟悉灰度图像的直方图的表示;
掌握图像增强的基本方法:灰度变换、直方图均衡;
实验内容
灰度线性变换、灰度直方图、直方图均衡处理;
灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特征更加明显。灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像增强。
实验原理
函数imadjust
函数imadjust是对灰度图像进行亮度变换的基本命令,语法为:
g = imadjust(f, [low_in high_in], [low_out high_out], gamma)
将图像f中的亮度值(灰度值)映射到新图像g中,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in以下的灰度值映射为low_out,high_in以上的灰度值映射为high_out,函数imadjust的矩阵[ ]内参数均指定在0和1之间,[low_in high_in]和[low_out high_out]使用空矩阵[ ]会得到默认值[0 1]。若high_out小于low_out,则输出图像会反转。
参数gamma指定了曲线(变换函数)的形状,若gamma小于1,则映射被加权至更高(更亮)的输出值;若gamma大于1,则映射被加权至更低(更暗)的输出值。若省略了函数的参量gamma,则gamma默认为1——即线性映射。
f = imread(‘filename’)
imshow(f)
g1 = imadjust(f, [0 1], [1 0]); %图像反转
figure, imshow(g1) %figure命令表示同时显示多个窗口
g2 = imadjust(f, [0.5 0.75], [0 1]);
%将0.5至0.75之间的灰度级扩展到范围0和1之间
figure, imshow(g2)
g3 = imadjust(f, [ ], [ ], 2) %使用gamma值
figure, imshow(g3)
直方图处理与函数绘图
图像的直方图定义为离散函数:
h(rk) = nk
绘制图像的直方图,函数imhist,语法为:
h = imhist(f, b)
f为输入图像,h为直方图h(rk),b是用于形成直方图的灰度级个数,若b省略,则默认值为256。
函数numel(f)可给出图像f的象素个数,有了它可归一化直方图:
p = imhist(f, b) / numel(f)
imhist(f) %MTALAB默认显示的图像f的直方图
MATLAB中其它一些有代表性的绘制函数选项:
用条形图绘制直方图
函数bar(horz, v, width),其中,v是一个行(列)向量,它包含将被绘制的点;horz是一个与v有相同维数的向量,它包含水平标度值的增量;width是一个在0到1之间的数,表示竖条宽度,width值为1时,竖条较明显;当width的值为0时,竖条是简单的垂直线;width的默认值是0.8。在绘制条形图时,我们通常会将水平轴等分为几段,以便降低水平轴的分辨率。下面的语句将生成一副条形图,其水平轴以10个灰度级为一组:
h = imhist(f)
h1 = h(1:10:256)
horz = 1:10:256
bar(horz, h1)
axis([0 255 0 15000])
%axis函数设置了水平轴和垂直轴的最大和最小值,语法为:
%axis([horzmin horzmax vertmin vertmax])
set(gca, ‘xtick’, 0:50:255)
set(gca, ‘ytick’, 0:2000:15000)
%参数gca表示“获得当前轴”(即最终显示的图形的轴),参数xtick和%ytick按所示的间隔设置水平轴和的垂直轴的刻度。
%这两个语句中,坐标轴的取值范围和刻度线都是人工设定的。使用函数%xlim(‘auto’)和ylim(‘auto’)可以自动设定坐标轴的取值范围和刻度线。
用杆状图绘制直方图
函数stem(horz, v, ‘color_linestyle_marker’, ‘fill’),参量color_linestyle_marker来自下表的三个值:颜色_线形_标记
例如,stem(v, ‘r--s’)生成一副杆状图,其线条与标记点都为红色,线条为虚线,标记点为方形。若使用fill,且标记点为圆形、方形、菱形,则标记点的颜色会是color指定的颜色。
默认颜色是black黑
显示全部