实验2:图像增强

一 实验目的和要求

理解图像灰度映射的原理。
掌握MATLAB编程实现图像灰度映射的方法
理解直方图均衡的原理
掌握MATLAB中用直方图均衡改善图像的方法
理解空间滤波的种类和方法
掌握使用MATLAB中的空间滤波增强图像的方法
了解傅里叶变换及频域滤波原理
掌握使用MATLAB中的频域滤波增强图像的方法

二 实验环境

操作系统环境:windows 10
开发工具:MATLAB R2018b
其它辅助工具:百度、谷歌搜索引擎

三 实验内容

1. 考虑使用图1所示的门形灰度映射函数,其作用是可将某个灰度值范围(这里为s1到s2间)变得比较突出(较高的灰度值t2),而将其余灰度值变为某个低灰度值(t1)。

图1门形灰度映射函数
(1)用门形灰度映射函数对给定输入图像进行增强。如果同时增加s1和s2的值,或同时减小s1和s2的值,指出两种情况下输出图像都会发生什么样的变化。
(2)用门形灰度映射函数对给定输入图像进行增强。如果增加s1而减小s2的值,或减小s1而增加s2的值,指出两种情况下输出图像都会发生什么样的变化。
(1)分析及设计思路
设置初始s1和s2的值,通过循环判断的到增强的灰色图像,如图2所示。然后根据题目而修改s1或者s2的大小,最后得到结果。

图2 增强后的灰度图像
(2)解答及源码
第一问(1)同时增加s1、s2 图像比前面增强的图像变白,同时减小s1、s2 图像比前面增强的图像变黑。
第二问(2)增加s1减小s2 图像整体变黑【比(1)的黑更黑】,减小s1增加s2 图像整体变白【比(1)的白更白】。
本程序的源码如下所示:

 clc;  clear;  close all;  %% (1)  % 读取图像  % 因为我的matlaim = imread('lena.jpg');  % 灰度化处理  im1 = rgb2gray(im);  % 显示原图  figure;  subplot(221);  imshow(im1);  title('原始灰度图像');  % 设定参数  t1 = 20;  t2 = 128;  % 图像尺寸  [N,M] = size(im1);  % 灰度阈值  s1 = 70;  s2 = 150;  % 增强图像  im2 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im2(i,j) = t1;  else  im2(i,j) = t2;  end  end  end  subplot(222);  imshow(im2);  title('增强的灰度图像');  %% s1 s2 同时增大  % 灰度阈值  s1 = 70+50;  s2 = 150+50;  %   im3 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im3(i,j) = t1;  else  im3(i,j) = t2;  end  end  end  subplot(223);  imshow(im3);  title('s1s2同时增加后增强的灰度图像');  %% s1 s2 同时增大  % 灰度阈值  s1 = 70-50;  s2 = 150-50;  % 增强图像  im4 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im4(i,j) = t1;  else  im4(i,j) = t2;  end  end  end  subplot(224);  imshow(im4);  title('s1s2同时减小后增强的灰度图像');  %% 同时增加s1s2 图像比前面增强的图像变白  %% 同时减小s1s2 图像比前面增强的图像变黑  %% (2)  % 显示原图  figure;  subplot(221);  imshow(im1);  title('原始灰度图像');  subplot(222);  imshow(im2);  title('增强的灰度图像');  %% 增加s1 减小s2  % 灰度阈值  s1 = 70+30;  s2 = 150-30;  %   im5 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im5(i,j) = t1;  else  im5(i,j) = t2;  end  end  end  subplot(223);  imshow(im5);  title('s1增加s2减小后增强的灰度图像');  %% 减小s1 增加s2  % 灰度阈值  s1 = 70-30;  s2 = 150+30;  %   im6 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im6(i,j) = t1;  else  im6(i,j) = t2;  end  end  end  subplot(224);  imshow(im6);  title('s1减小s2增加后增强的灰度图像');  %% 增加s1减小s2 图像整体变黑【比(1)的黑更黑】  %% 减小s1增加s2 图像整体变白【比(1)的白更白】

(3)实验结果及分析
实验结果如图3、4所示:

图3 第1问实验结果

图4第2问实验结果

2. 设有一幅图像有如图5所示直方图,请用手工方法列表计算该直方图的均衡化直方图。

图5 直方图
(1)分析及设计思路
根据课本例2.4.2学习其计算方法,然后逐步计算本题,最终的出结果。
(2)解答及源码
计算步骤如下表1所示。
表1 均衡化直方图步骤
序号 运算 步骤和结果
1 原始图像灰度级 0 1 2 3 4 5 6 7
2 原始直方图sk 0.17 0.09 0.09 0.08 0.07 0.06 0.06 0.38
3 计算累计直方图各项tk 0.17 0.26 0.35 0.43 0.5 0.55 0.62 1
4 取整扩展:
tk=int[(L-1)tk+0.5]
L:灰度级个数 1 2 2 3 3 4 4 7
5 确定映射对应关系
(sk→tk) 0→1 1 , 2→2 3 , 4→3 5 , 6→4 7→7
6 根据映射关系计算
均衡化直方图   0.174 0.174 0.148 0.12     0.384

(3)实验结果及分析
本次实验题目2的结果如图6所示。

图6 第2题实验结果

  1. 收集10幅灰度图像,包括过亮、过暗、对比度暗淡等图像,使用MATLAB的直方图均衡方法对其进行直方图均衡。依次显示原图、原图直方图、均衡后的图像及其直方图,尝试总结一下直方图均衡方法对什么样的图像改善效果较好。
    (1)分析及设计思路
    使用matlab显示图像灰色直方图函数imhist和直方图均衡函数histeq对图像进行处理,从而得到实验结果。
    (2)解答及源码
    此程序的源码如下:
 clc;  clear;  close all;  %% (1)  % 读取图像  % 因为我的matlaim = imread('lena.jpg');  % 灰度化处理  im1 = rgb2gray(im);  % 显示原图  figure;  subplot(221);  imshow(im1);  title('原始灰度图像');  % 设定参数  t1 = 20;  t2 = 128;  % 图像尺寸  [N,M] = size(im1);  % 灰度阈值  s1 = 70;  s2 = 150;  % 增强图像  im2 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im2(i,j) = t1;  else  im2(i,j) = t2;  end  end  end  subplot(222);  imshow(im2);  title('增强的灰度图像');  %% s1 s2 同时增大  % 灰度阈值  s1 = 70+50;  s2 = 150+50;  %   im3 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im3(i,j) = t1;  else  im3(i,j) = t2;  end  end  end  subplot(223);  imshow(im3);  title('s1s2同时增加后增强的灰度图像');  %% s1 s2 同时增大  % 灰度阈值  s1 = 70-50;  s2 = 150-50;  % 增强图像  im4 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im4(i,j) = t1;  else  im4(i,j) = t2;  end  end  end  subplot(224);  imshow(im4);  title('s1s2同时减小后增强的灰度图像');  %% 同时增加s1s2 图像比前面增强的图像变白  %% 同时减小s1s2 图像比前面增强的图像变黑  %% (2)  % 显示原图  figure;  subplot(221);  imshow(im1);  title('原始灰度图像');  subplot(222);  imshow(im2);  title('增强的灰度图像');  %% 增加s1 减小s2  % 灰度阈值  s1 = 70+30;  s2 = 150-30;  %   im5 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im5(i,j) = t1;  else  im5(i,j) = t2;  end  end  end  subplot(223);  imshow(im5);  title('s1增加s2减小后增强的灰度图像');  %% 减小s1 增加s2  % 灰度阈值  s1 = 70-30;  s2 = 150+30;  %   im6 = uint8(zeros(N,M));  % 循环判断  for i = 1:N  for j = 1:M  if im1(i,j) < s1 || im1(i,j) > s2  im6(i,j) = t1;  else  im6(i,j) = t2;  end  end  end  subplot(224);  imshow(im6);  title('s1减小s2增加后增强的灰度图像');  %% 增加s1减小s2 图像整体变黑【比(1)的黑更黑】  %% 减小s1增加s2 图像整体变白【比(1)的白更白】

(3)实验结果及分析
实验2题目3的结果如图7、8、9所示。

图7 实验结果

图8 实验结果

图9 第3题运行结果

4. 编程先将一幅灰度图像用3×3平均滤波器平滑一次,再进行如下图10所示增强:

g(x,y)={■(G[f(x,y)]@f(x,y))┤ ■(@)■(G[f(x,y)]≥T@其它)
图10 题4图
其中,G[f(x, y)]是f(x,y)在(x, y)处的梯度;T是非负阈值。
(1)比较原始图像和增强图像,看哪些地方得到了增强;
(2)改变阈值T的数值,看对增强效果有哪些影响。
(1)分析及设计思路
第一步先将灰度图像使用im2double函数转为[0,1]浮点数,然后通过平均滤波平滑,采用的sobel模板如下图11所示,最后通过给定公式进行图像增强。

图11 Sobel算子
(2)解答及源码
第一问(1)比较原图像和增强图像可得在边缘处得到了增强,因为边缘处梯度大。
第二问(2)改变阀值T后,发现阈值越大,边缘被增强的效果越差。
此程序的源码如下:

clc;  clear;  close all;  %% (1)  % 读取图像  im = imread('lena.jpg');  % 灰度化处理  im1 = rgb2gray(im);  % 显示原图  figure;  subplot(221);  imshow(im1);  title('原始灰度图像');  % 图像尺寸  [N,M] = size(im1);  % 转成[0,1]浮点数  im1 = im2double(im1);  % 滤波图像  im2 = im1;  % 循环  平均滤波  for i = 2:N-1  for j = 2:M-1  im2(i,j) = sum(sum(im1(i-1:i+1,j-1:j+1)))/9;  end  end  subplot(222);  imshow(im2,[]);  title('平均滤波后的灰度图像');  % sobel 垂直梯度模板  Gx = [1 2 1;0 0 0 ;-1 -2 -1];  % sobel 水平梯度模板  Gy = [-1 0 1;-2 0 2;-1 0 1];  % 阈值  T = 0.1;  % 增强图像  im3 = im2;  % 循环判断  for i = 2:N-1  for j = 2:M-1  dx = sum(sum(im2(i-1:i+1,j-1:j+1).*Gx));  dy = sum(sum(im2(i-1:i+1,j-1:j+1).*Gy));  G = abs(dx)+abs(dy);  if G >= T  im3(i,j) = G;  end  end  end  subplot(223);  imshow(im3,[]);  title('T=0.1增强的灰度图像');  %% 边缘处 得到了增强,因为边缘处 梯度大  % 阈值  T = 2.5;  % 增强图像  im4 = im2;  % 循环判断  for i = 2:N-1  for j = 2:M-1  dx = sum(sum(im2(i-1:i+1,j-1:j+1).*Gx));  dy = sum(sum(im2(i-1:i+1,j-1:j+1).*Gy));  G = abs(dx)+abs(dy);  if G >= T  im4(i,j) = G;  end  end  end  subplot(224);  imshow(im4,[]);  title('T=2.5增强的灰度图像');

(3)实验结果及分析
本次实验题目4的结果如图7所示。

图7 第4题实验结果
通过实验结果可知使用题目给定公式进行增强图像后,图像的边缘处得到了增强,因为边缘处梯度大。当改变阀值T后,发现阈值越大,边缘被增强的效果越差。

5. 图12是线性和非线性混合滤波模板,其中12(a)图的滤波运算如图13所示,请参照给出图12(b)、©两个模板的滤波运算式。

图12 线性和非线性混合滤波模板

图13 (a)图滤波运算式
(1)分析及设计思路
通过给定的12(a)图的运算式,可推理得出图12(b)、12©的运算式。
(2)解答及源码
(b)图的滤波运算如下式:
g(x,y)=MED{1/2 [f(x+2,y-2)+f(x+2,y-1)], 1/2 [f(x-1,y+1)+f(x-2,y+2)],f(x,y), 1/2 [f(x-2,y-2)+f(x-1,y-1)], 1/2[f(x+1,y+1)+f(x+2,y+2)]}
©图的滤波运算如下式:
g(x,y)=MED{1/2 [f(x,y-1)+f(x,y-2)+f(x-1,y-2) +f(x+1,y-2)], 1/2 [f(x,y+1)+f(x,y+2)+f(x-1,y+2)+f(x+1,y+2)],f(x,y), 1/2 [f(x-1,y)+f(x-2,y)+f(x-2,y+1)+f(x-2,y-1)], 1/2[f(x+1,y)+f(x+2,y)+f(x+2,y-1)+f(x+2,y+1)]}

  1. 分别使用锐化滤波和高频提升滤波对一幅图像(自备)进行锐化。分别显示原图像、平滑后的图像、锐化滤波图像、高频提升滤波图像,以及最后锐化后的增强图像。
    (1)分析及设计思路
    在锐化滤波中采用sobel算子对图像进行锐化,使用imfilte函数进行平滑处理,自定义函数高频滤波器。
    (2)解答及源码
    此程序的源码如下:
  clear;  clc;  img1=imread('moon.jpg');  img=rgb2gray(img1);  img=im2double(img);%输入图像类型为uint8,将其转换为double类型进行运算  %平滑  Inoised = imnoise(img,'gaussian',0.1,0.005);%对图像进行高斯噪声加噪  %制定卷积核  h=ones(3,3)/5;  h(1,1) = 0;  h(1,3) = 0;  h(3,1) = 0;  h(1,3) = 0;  %平滑运算  I2=imfilter(img,h);  %锐化  f_average = fspecial('average',[3 3]);  f_sobel = fspecial('sobel');  f_laplacian = fspecial('laplacian',0);  B1 = imfilter(img,f_average);  B2 = imfilter(img,f_sobel);  B3 = imfilter(img,f_laplacian);  figure;  subplot(231);imshow(img1);title('原图91703070130');  subplot(232);imshow(img);title('原图91703070130');  %% 平滑  subplot(233);imshow(Inoised);title('添加噪声后的图像');  subplot(234);imshow(I2);title('平滑后的图像');  %% 锐化  subplot(235);imshow(img-B3);title('锐化后的图像');  %% 高频率波  subplot(236);imshow(strength_filter(img,3));title('高频提升滤波后的图像');

(3)实验结果及分析
本次实验题目6的结果如图14所示。

图14 第6题实验结果

7. 右图是一幅受到噪声污染的图像(原始图像见本实验素材),请使用非线性滤波改善其视觉效果。

(1)分析及设计思路
按题目要求采用的是中值滤波器,先是读取图像后检索图像大小并设置为double类型,之后取出图像中与模板对应的数据,将取出数据矩阵变为矢量,计算矢量中值,最后将中值写入中心位置,一共使用33、55、77、99四种模板。
(2)解答及源码
分为两个M文件,程序一是读取图像和展示结果,程序二是中值滤波器。此程序的源码如下:

clear;  clc;  %% 读入并显示原图  figure('name','原图91703070130','NumberTitle','off');  J=imread('characters_noise.tif');  imshow(J);  %% 中值滤波器  n=2;    % n=2 选择中值滤波  k=1;    % 标识分隔窗口时的窗口号  w=1;     if w==1||n==2           % MY中值滤波  figure('name','MY中值滤波','NumberTitle','off');  for j=3:2:9  J2=myfilter2('medium',j,J);  subplot(2,2,k);  imshow(J2);  title([num2str(j),'x',num2str(j),'模版']);  k=k+1;  end  end  %程序二 中值滤波器 function Y=myfilter2(type,N,X)  %主函数必须位于最上方  switch type  case 'medium'  Y=medium(N,X);  otherwise  Y=X;  end % /!switch   end % /!function Y=myfilter2(type,N,X)  %% medium  % 中值滤波器,模版为NxN  function I=medium(N,X)  [height,width]=size(X);     % 检索图像大小  dX=double(X);               % 保存计算后的图像(double类型)  for i=1:height-N+1  for j=1:width-N+1  temp=X(i:i+(N-1),j:j+(N-1));    % 取出图像中与模版对应的数据  s=temp(:);                      % 将矩阵转变为一个矢量  med=median(s);                  % 计算矢量的中值  dX(i:i+(N-1)/2,j:j+(N-1)/2)=med;% 将中值写入中心位置  end  end  I=uint8(dX);  end % /! function I=medium(N,X)

(3)实验结果及分析
本次实验题目7的结果如图15、16所示。

图15 原图

图16 第7题实验结果

四 心得体会

这是第二次图像处理实验,很明显感觉得到这一次题的难度比上次提升了许多,导致我在第6题就花费了很多的时间,值得欣慰的是最后还是做出来了,马上临近期末,这门课也要走向尾声,期待后面的大作业和学习。

重庆理工大学图像处理实验二:图像增强相关推荐

  1. 重庆理工大学图像处理实验三:图像分割

    图像处理实验3:图像分割 实验目的和要求 实验内容 实验代码 实验结果 实验目的和要求 掌握点.线和边缘检测常用算子. 掌握MATLAB编程实现图像点.线和边缘检测. 理解霍夫变换的原理. 掌握MAT ...

  2. 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...

    数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...

  3. 天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二

    <天津理工大学计算机网络 实验二>由会员分享,可在线阅读,更多相关<天津理工大学计算机网络 实验二(6页珍藏版)>请在人人文库网上搜索. 1.实验报告学院(系)名称:计算机与通 ...

  4. 北京理工计算机实验二报告,北京理工大学计算机实验二报告表.doc

    <北京理工大学计算机实验二报告表.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<北京理工大学计算机实验二报告表.doc>文档请在天天文库搜索. ...

  5. 数字图像处理实验三图像增强

    一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的 感性认识,巩固所学的图像增强的理论知识和相 关算法. (2)熟练掌握直方图均衡化和直方图规定化的计算过 程. (3)熟练掌握空域滤波中常 ...

  6. 数字图像处理实验(二)

    实验目的 实验一:图像增强 了解图像增强的目的及意义,加深对图像增强的感性认知 1. 掌握直接灰度变换的图像增强方法 2. 掌握灰度直方图的概念及其计算方法 3. 掌握直方图均衡化合直方图规定化得计算 ...

  7. 删除计算机系学生的选课记录6,天津理工大学+数据库实验二.doc

    文档介绍: 实验报告学院(系)名称:计算机与通信工程学院姓名Touchkiss学号20125577专业计算机科学与技术班级2班实验项目实验二:复杂SQL数据操作课程名称数据库系统课程代码0668026 ...

  8. 天津理工大学 计算机网络综合实验,天津理工大学计算机网络实验二.pdf

    实验报告 学院(系)名称: 计算机与通信工程学院 姓名 学号 专业 计算机科学与技术 班级 实验名称 实验二:基于 TCP/UDP 的 Socket 编程 课程名称 计算机网络 课程代码 实验时间 实 ...

  9. MATLAB数字图像处理 实验二:单像素空域图像增强

    目录 一.实验目的 二.实验环境 三.实验内容 题目 相关知识 部分核心代码 实验结果 四.实验小结 一.实验目的 1.熟悉基于基于单像素空域图像增强方法,理解并掌握直方图均衡化和规定化实现图像增强 ...

最新文章

  1. Android发送短消息程序的总结
  2. [转][Timer学习]wall time和monotonic time
  3. 【OpenCV3】cv::Mat中的数据按行列写入txt文件中
  4. c#使用FluentFtp实现一行代码实现ftp上传下载等
  5. 树:求二叉树的高度和叶子结点数量
  6. 使用jedis访问redis
  7. MongoDb和LINQ:如何汇总和加入集合
  8. 《连线》杂志专访李彦宏:百度all in AI 欲引领智能革命
  9. 通过adb查看当前页面中显示的窗口Activity名称
  10. android 手机数据查看及 samsung galaxy s10 开发者模式
  11. python怎么去掉换行符_python去除空格和换行符的实现方法(推荐)
  12. CPU与存储器连接习题
  13. Field II 超声声场仿真(3): 脉冲-回波响应(原理代码)
  14. 软件设计能力提升之设计匠艺
  15. “五•一”黄金周市民旅游指南
  16. 美化生活杂志美化生活杂志社美化生活编辑部2023年第9期目录
  17. 详解准确率acc、精确率p、准确率acc、F1 score
  18. Logitech pro wireless GPW狗屁王 适配苹果电脑 Mac
  19. 计算机专业考研选学校好,计算机专业考研选什么学校比较好?
  20. 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?

热门文章

  1. 大数据分析平台安全的重要性
  2. Acwing第 38 场周赛
  3. 雪色光晕(计算几何+暴力)
  4. AcWing 836. 合并集合
  5. [USACO13FEB]Tractor【二分 + BFS】
  6. 笔记︱多种常见聚类模型以及分群质量评估(聚类注意事项、使用技巧)
  7. [linux]centOS 7.6重新分配Home目录的大小
  8. 解决gitlab限制上传大小文件的问题
  9. ASP.NET使用ConfigurationSection在Web.Config创建自定义配置节
  10. USB2.0学习笔记连载(四):安装Cypress官网套件