【数字图像处理】实验(2)——图像增强(MATLAB实现)

一、实验意义及目的

(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进行分段线性变换;

代码:

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('伪彩色增强');

结果:
在这里插入图片描述

(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(result1),title('椒盐噪声3×3中值滤波');
subplot(122),imshow(result2),title('高斯噪声3×3中值滤波');


结果:
在这里插入图片描述

(6)对gray利用Sobel算子锐化;

代码:

Image1=im2double(imread('lotus.bmp'));
gray=rgb2gray(Image1
  • 30
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚神公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值