一、实验意义及目的
(1)进一步掌握图像处理工具Matlab,熟悉基于Matlab的图像处理函数。
(2)掌握各种图像增强方法。
二、实验内容
1.打开一幅彩色图像Image1,使用Matlab图像处理函数,对其进行下列变换:
(1)将Image1灰度化为gray,统计并显示其灰度直方图;
(2)对gray进行分段线性变换;
(3)对gray进行直方图均衡化;
(4)对gray进行伪彩色增强;
(5)对gray添加噪声并平滑;
(6)对gray利用Sobel算子锐化;
(7)实验要求中的拓展内容。
2.拓展内容:
(1)对以上处理变换参数,查看处理效果;
(2)更改伪彩色增强方法为热金属编码或彩虹编码;
(3)设计不同的平滑滤波、锐化滤波方法,查看处理效果;
(4)自行设计方法,实现对彩色图像增强处理。
三、实验原理
1.灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。
2.直方图均衡化通过点运算将输入图像转换为在每一级上都有相等像素点数的输出图像。
3.伪彩色增强:把一幅黑白域图像的不同灰度级映射为一幅彩色图像的技术手段。
4.锐化(Sharpening) :图像在传输或变换过程中(如未聚焦好)、受到各种干扰而退化,典型的是图像模糊,而图像的判读和识别中,常需突出目标的轮廓或边缘信息。
5.边缘锐化:主要增强图像的轮廓边缘、细节( 灰度跳变部分),以突出图像中景物的边缘或纹理,形成完整的物体边界,使边缘和轮廓模糊的图像清晰,又叫空域高通滤波(俗称为勾边处理)。
四、Matlab相关函数介绍
(1)imhist函数
功能:统计变显示图像的直方图。
调用格式:
imhist(I):显示图像I的直方图。
imhist(I, n):显示图像I的直方图,n指定直方图中的列数。
[COUNTS,X] = imhist(…):返回直方图数据向量COUNTS和相应的色彩值向量X。
(2)histeq函数
功能:直方图均衡化
调用格式:
J = histeq(I,hgram):将图像I的直方图变成用户指定的向量hgram,hgram中的各元素值域为[0,1];
J = histeq(I,N):对原始图像I进行直方图均衡化,N为输出图像的灰度技术,默认N为64。
(3)imadjust函数
功能:调整图像灰度值或颜色映射表,增加图像的对比度。
调用格式:
J = imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA):调整图像I的灰度值;[LOW_IN; HIGH_IN]指定原始图像中要变换的灰度范围;[LOW_OUT; HIGH_OUT]指定变换后的灰度范围;低于LOW_IN 、高于HIGH_IN 的采取截取式;都可以使用空的矩阵[],默认值是[0 1]; GAMMA为标量,指定描述值I和值J关系的曲线形状,如果小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。
NEWMAP = imadjust(MAP,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA):调整索引图像的颜色表map,其他参量同上。
RGB2 = imadjust(RGB1,…):对RGB图像RGB1的R、G、B分量进行调整。
(4)imnoise函数
J = imnoise(I,type,parameters):按指定类型在图像I上添加噪声;type表示噪声类型,parameters为其所对应参数,可取值如表1所示:
表1 imnoise函数参数表
(5)fspecial函数
h=fspecial(type,parameters):创建指定类型和参数的二维滤波器h,如表2所示:
表2 fspecial函数参数表
(6)filter2函数
Y = filter2(B,X,shape):使用二维FIR滤波器B对矩阵X进行滤波;shape指定返回值Y的形式,‘full’:Y的维数大于X;‘same’:Y的维数等于X;‘valid’:Y的维数小于X;默认为same。
(7)imfilter函数
B=imfilter(A,H,option1,option2,…):根据指定的属性option1,option2…等,使用多维滤波器H对图像A进行滤波,H常由函数fspecial输出得到。属性参数如表3所示:
表3 imfilter函数参数表
(8)medfilt2函数
B = medfilt2(A,[m n]]):用[m n]大小的滤波器对图像A进行中值滤波,输出图像为B,滤波器大小默认为3×3。
(9)edge函数
BW = edge(I):对灰度或二值图像I进行边缘检测,检测后图像为二值图像BW,边界处取值为1,否则为0。缺省情况下,edge函数使用Sobel算子检测边缘,也可以指定算子。
BW = edge(I,‘sobel’);BW = edge(I,‘prewitt’);BW = edge(I,‘roberts’);
BW = edge(I,‘log’);BW = edge(I,‘canny’)引号内为指定算子。
BW = edge(I,‘sobel’,thresh):thresh指定保留边缘的阈值,若为0,edge函数自动选择该值。
五、代码及结果
(1)将Image1灰度化为gray,统计并显示其灰度直方图;
(2)对gray进行分段线性变换;
代码:文章来源地址https://www.toymoban.com/news/detail-422395.html
Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1);
imhist(gray),title('灰度直方图');
[h,w]=size(gray);
NewImage1=zeros(h,w);
a=80/256; b=180/256; c=30/256; d=220/256;
for x=1:w
for y=1:h
if gray(y,x)<a
NewImage1(y,x)=gray(y,x)*c/a;
elseif gray(y,x)<b
NewImage1(y,x)=(gray(y,x)-a)*(d-c)/(b-a)+c;
else
NewImage1(y,x)=(gray(y,x)-b)*(255-d)/(255-b)+d;
end
end
end
figure,imshow(NewImage1),title('分段线性变换');
结果:
(3)对gray进行直方图均衡化;
代码:
Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1);
NewImage2=histeq(gray);
figure,imshow(NewImage2),title('直方图均衡化');
结果:
(4)对gray进行伪彩色增强;
代码:
Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1);
NewImage3=zeros(h,w,3);
for x=1:w
for y=1:h
if gray(y,x)<64/256
NewImage3(y,x,1)=0;
NewImage3(y,x,2)=4*gray(y,x);
NewImage3(y,x,3)=1;
elseif gray(y,x)<128/256
NewImage3(y,x,1)=0;
NewImage3(y,x,2)=1;
NewImage3(y,x,3)=2-4*gray(y,x);
elseif gray(y,x)<192/256
NewImage3(y,x,1)=4*gray(y,x)-2;
NewImage3(y,x,2)=1;
NewImage3(y,x,3)=0;
else
NewImage3(y,x,1)=1;
NewImage3(y,x,2)=4-4*gray(y,x);
NewImage3(y,x,3)=0;
end
end
end
figure,imshow(NewImage3),title('伪彩色增强');
结果:
文章来源:https://www.toymoban.com/news/detail-422395.html
(5)对gray添加噪声并平滑;
代码:
Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1);
noiseIsp=imnoise(gray,'salt & pepper',0.1);
noiseIg=imnoise(gray,'gaussian');
result1=medfilt2(noiseIsp);
result2=medfilt2(noiseIg);
figure;
subplot(121),imshow(re
到了这里,关于【数字图像处理】实验(2)——图像增强(MATLAB实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!