1         图像增强

1.1            直方图均衡化

对于灰度图像,可以使用直方图均衡化的方法使得原图像的灰度直方图修正为均匀的直方图。

代码如下:

1

2

3I2=histeq(I1);

figure,imshow(I2);

figure,imhist(I2);

原图像为lena的图片,经过直方图均衡化后的图片为Figure 1。

Figure 1

原图灰度直方图请参见:MATLAB数字图像处理(一)基础操作和傅立叶变换,经过修正后的灰度直方图为Figure 2:

Figure 2

可以看出,与原图对比,灰度分布更加均匀。

1.2            灰度变换

在MATLAB中,可以使用imadjust函数对图像进行线性变换。常用的为线性变换。使用的函数为imadjust(I, [low_in, high_in], [low_out high_out],gamma),其中,in为输入的图片变化的灰度范围,out为输出的图片变化的灰度范围,均为[0 1]之间。也就是将low_in和high_in之间的值映射到low_out和high_out之间。gamma为线性值,若为1则为线性变换。

代码和效果如下:

1

2

3I3=imadjust(I1,[0.3 0.7],[0.1 0.9],1);

figure,imshow(I3);

figure,imhist(I3);

Figure 3

Figure 4

其中,突出了原图0.3-0.7之间的灰度元素。

1.3            空间域平滑

图像平滑是为了抑制图像噪声,改善图像质量而进行的图片处理。在这里,笔者将首先介绍MATLAB中自带的均值滤波和中值滤波实现,之后设计自己的模版算子, 再次分别实现了均值滤波和中值滤波。

MATLAB中自带的均值滤波可以采用fspecial(‘params’,n)函数实现,其中,params代表的是滤波的种类,常用的有average(均值滤波),还有可以在空间域锐化中用到的高斯、拉普拉斯、prewitt、sobel算子等。n代表的是模版的在这里仅仅介绍均值滤波。

MATLAB中,均值滤波代码如下:

1

2

3avgModel=fspecial('average',3);

Iavg=filter2(avgModel,I2)/255;

figure,imshow(Iavg);

由于均值滤波对于高斯噪声效果较好,故对高斯噪声的图(参见

Figure 5

而笔者根据均值滤波原理,自己写了一段代码,如下:

1

2

3

4

5

6

7

8

9

10

11

12n=3;

model(1:n,1:n)=1;

Iavg=I2;

for i=2:length(Iavg)-1

for j=2:length(Iavg(2,:))-1

x=I2(i-(n-1)/2:i+(n-1)/2,j-(n-1)/2:j+(n-1)/2);

xuint=uint8(model).*uint8(x);

x_avg=mean(xuint(:));

Iavg(i,j)=x_avg;

end

end

figure,imshow(Iavg);

效果(Figure 6):

Figure 6

可以发现,除了运行速度稍慢,效果与MATLAB自带的函数相同。

MATLAB中自带的中值滤波可以采用medfilt2(I,[n n])函数实现,其中,I代表的是需要处理的图片,n代表的是模版的大小。

MATLAB中,中值滤波代码如下:

1

2Imid=medfilt2(I3,[3,3]);

figure,imshow(Imid);

由于中值滤波对于椒盐噪声效果较好,故对椒盐噪声的图(参见

Figure 7

而笔者根据中值滤波原理,自己写了一段代码,如下:

1

2

3

4

5

6

7

8

9

10n=3;

Imid=I3;

for i=2:length(I1)-1

for j=2:length(I1(2,:))-1

x=I3(i-(n-1)/2:i+(n-1)/2,j-(n-1)/2:j+(n-1)/2);%3*3

x_mid=median(x(:));

Imid(i,j)=x_mid;

end

end

figure,imshow(Imid);

效果(Figure 8):

Figure 8

可以发现,除了运行速度稍慢,效果与MATLAB自带的函数相同。

1.4            空间域锐化

图像锐化有多种方法,最常用的锐化算子包括梯度算子、Roberts算子、Prewitt算子、Sobel算子以计算梯度的梯度锐化法,Laplacian算子等。接下来,笔者将一一介绍相关的算子。

笔者根据梯度算子的计算原理,编写了如下代码:

1

2

3

4

5

6

7

8

9

10Igrad=I1;

for i=1:length(Igrad)-1

for j=1:length(Igrad(2,:))-1

x=I1(i,j+1)-I1(i,j);

y=I1(i+1,j)-I1(i,j);

grad=max(abs(x),abs(y));

Igrad(i,j)=grad;%¸³Öµ

end

end

figure,imshow(Igrad);

效果(Figure 9):

Figure 9

MATLAB中自带了Prewitt算子和Sobel算子的函数,代码及效果如下:

1

2

3model=fspecial('prewitt');

Iprewitt=filter2(model,I1);

figure,imshow(Iprewitt);

Figure 10

1

2

3model=fspecial('sobel');

Isobel=filter2(model,I1);

figure,imshow(Isobel);

Figure 11

事实上,可以发现这几种算子之间不同的地方只是在于模版,因此笔者编写了一个可以自定义各种模版的代码,如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15n=2

modelx=[-1 0;0 1];

modely=[0 -1;1 0];

Iend=I1;

Idouble=double(I1);

for i=1:length(Idouble)-5+n

for j=1:length(Idouble(2,:))-5+n

area=Idouble(i:i+n-1,j:j+n-1);

x=area.*modelx;

y=area.*modely;

grad=max(abs(sum(x(:))),abs((sum(y(:)))));

Iend(i,j)=grad;%¸³Öµ

end

end

figure,imshow(Iend);

可以显示出Roberts算子的效果:

Figure 12

与Prewitt算子、Sobel算子经过对比后发现效果相同,说明有效。

对于Laplacian算子,同样可以使用MATLAB中自带的函数,也可以进行自定义。自带函数使用方法如下:

1

2

3model=fspecial('laplacian');

Ilaplacian=filter2(model,I1);

figure,imshow(Ilaplacian,[]);

效果:

Figure 13

套用前面自定义模版后的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13n=3;

model=[0 -1 0;-1 5 -1;0 -1 0];

Iend=I1;

Idouble=double(I1);

for i=1:length(Idouble)-5+n

for j=1:length(Idouble(2,:))-5+n

area=Idouble(i:i+n-1,j:j+n-1);

x=area.*model;

grad=sum(x(:));

Iend(i,j)=grad;

end

end

figure,imshow(Iend);

效果:

Figure 14

与教科书上的效果相同。

1.5            频率域图像增强

频率域增强包括高通滤波器和低通滤波器,主要是使用傅立叶变换和逆变换对图像进行处理。在MATLAB中没有直接的滤波器函数,但是可以结合原理与MATLAB中的数学公式,构造各种滤波器。在本文中,笔者分别构造了理想、Butterworth、指数的高通和低通滤波器,并一一进行了实验。

首先需要提前设定截止频率D0和阶数n。之后就可以套用具体的公式进行计算了。部分代码如下:

1

2

3

4

5

6

7

8

9

10

11n=6;%滤波器的阶数

D0=80;%滤波器的截止频率

[u,v]=meshgrid(-M/2:(M/2-1),-N/2:(N/2-1));%产生离散数据

D=sqrt(u.^2+v.^2);

%各种不同的滤波器

H1=double(D<=D0);%理想低通滤波器

H2=1./(1+(D/D0).^(2*n));%Butterworth低通滤波器

H3=exp(-(D/D0).^n);%指数低通滤波器

H4=double(D>=D0);%理想高通滤波器

H5=1./(1+(D0./D).^(2*n));%Butterworth高通滤波器

H6=exp(-(D0./D).^n);%指数高通滤波器

之后,可以使用各种不同的滤波器对图片进行处理。效果如下:

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

通过以上一系列的图片可以看出,低通滤波器可以抑制图像噪声,改善图像质量,高通滤波器可以突出图像的边界。

MATLAB说明图像增强,MATLAB数字图像处理(二)图像增强相关推荐

  1. 冈萨雷斯数字图像处理——彩色图像增强3实例

    冈萨雷斯数字图像处理--彩色图像增强3实例 实例一:基于直方图均衡化的彩色图像增强     要处理的图片:fruit.jpg               example1.m: clc; RGB=im ...

  2. 数字图像处理二维码识别 python+opencv实现二维码实时识别

    数字图像处理二维码识别 python+opencv实现二维码实时识别 特点: (1)可以实现普通二维码,条形码: (2)解决了opencv输出中文乱码的问题 (3)增加网页自动跳转功能 (4)实现二维 ...

  3. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  4. matlab数字图像实验报告,数字图像处理实验报告(matlab)

    数字图像处理实验报告(matlab) 学院:自动化学院 班级:电081班 姓名:李林树 学号:40850099 2011年10月 实验一 直方图均衡化 一. 实验目的: 1. 熟悉图像数据在计算机中的 ...

  5. 基于MATLAB的GUI界面数字图像处理系统

    目录 实验一 MATLAB数字图像处理初步 实验二 图像的代数运算 实验三 图像增强-空间滤波 实验四 图像分割 实验一 MATLAB数字图像处理初步 一.实验目的与要求 1.熟悉及掌握在MATLAB ...

  6. matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)

    这是一篇基于matlab,数字图像处理的形态学研究与实现的文章,希望能对你产生帮助. 我还写了一套<数字图像处理>(冈萨雷斯版本)的学习笔记,欢迎关注我的csdn同名主页,一起学习成长~ ...

  7. 沃尔什哈达玛变换Matlab,哈达玛变换矩阵-数字图像处理.ppt

    哈达玛变换矩阵-数字图像处理 3.1 二维离散傅里叶变换(DFT) 3.1.1 二维连续傅里叶变换 二维连续函数 f (x, y)的傅里叶变换定义如下: 设 是独立变量 的函数,且在 上绝对可积,则定 ...

  8. matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法

    [实例简介] 数字图像处理图像的骨架生成和提取(Matlab),有三种方法,推荐给大家! [实例截图] [核心代码] Programe ├── Programe1 │   ├── 00.JPG │   ...

  9. matlab武汉加油,[00]数字图像处理-matlab速成

    原本听的是mooc武汉大学的数字图像处理课程,但是无奈老师读ppt的能力太强,不太适应,后面的课程对于实验方面的要求甚低,无奈之下到处找课程,终于找到了一个适合自己的教程<王伟强-数字图像处理& ...

  10. MatLab 数字图像处理实验 图像增强

    实验内容 (1)对曝光不足的图像采用灰度线性变换对图像每一个像素灰度做线性拉伸. close all clear all I = im2double(imread('D:\figure51.jpg') ...

最新文章

  1. 2012/08/27 夜
  2. leetcode_1. Two Sum
  3. laravel ajax评论,javascript-Laravel 5.8尝试进行AJAX调用以删除评...
  4. JS每日一题:Vue中的diff算法?
  5. OS-鸿蒙系统-以及编译器
  6. HP-JavaUtil: xls 操作类
  7. 力扣114. 二叉树展开为链表(C++,解释一下别人的思路)
  8. java锁原理_Java锁原理学习
  9. 推荐系统学习(二)基于用户/物品的协同过滤算法(User-CF / Item-CF)
  10. mysql教程查询语句_最全的mysql查询语句整理
  11. JUnit5 @BeforeAll注解示例
  12. 009-Shell 函数
  13. 疯狂讲义java_《疯狂Java讲义》 1-概述
  14. 【Coursera公开课】职场素养 笔记
  15. 高校学籍管理系统(SQL Server数据库课程设计)
  16. ADOBE AIR 技术
  17. 设计模式-Builder模式详解
  18. JVM上篇:内存与垃圾回收篇--运行时数据区四-程序计数器
  19. 任正非讲话稿400篇_任正非讲话稿400余篇分享,最全任正非演讲稿下载
  20. java--守护线程处理超时任务

热门文章

  1. 某电影网站信息的爬取【干货】
  2. 图片无损放大怎么做?学会这一招就够了
  3. [理财日记] 简七小姐的理财日记(一)---教你省力地记账
  4. oracle数据库怎么创建数据库 oracle数据库工作流程
  5. html刷新某块区域,javascript如何实现局部刷新?
  6. 干撸一个Node环境的PDF生成服务
  7. java内存模型——JMM理解
  8. 国产化存储的趋势和监控
  9. [附源码]计算机毕业设计JAVA基于JAVAWEB的高校实训管理系统
  10. 【关于VB连接EXCEL数据库以ADODB方式】