重庆交通大学学生实验报告实验课程名称数字图像处理开课实验室数学实验室学院理学院年级信息与计算科学专业 2 班学生姓名李伟凯学号631122020203开课时间2014 至2015 学年第 1 学期实验(一)图像处理基础➢实验目的学习Matlab软件的图像处理工具箱,掌握常用的一些图像处理命令;通过编程实现几种简单的图像增强算法,加强对图像增强的理解。
➢实验内容题目A.打开Matlab软件帮助,学习了解Matlab中图像处理工具箱的基本功能;题目B.掌握以下常见图像处理函数的使用:imread( ) imageinfo( ) imwrite( ) imopen( ) imclose( ) imshow( ) impixel( ) imresize( ) imadjust( ) imnoise( ) imrotate( ) im2bw( ) rgb2gray( )题目C.编程实现对图像的线性灰度拉伸y = ax + b,函数形式为:imstrech(I, a,b);题目D.编程实现对图像进行直方图均衡化处理,并将实验结果与Matab中imhist 命令结果比较。
三、实验结果1).基本图像处理函数的使用:I=imread('rice.png');se = strel('disk',1);I_opened = imopen(I,se);%对边缘进行平滑subplot(1,2,1), imshow(I), title('原始图像')subplot(1,2,2), imshow(I_opened), title('平滑图像')原始图像平滑图像I=imread('rice.png');se = strel('disk',1);I_opened = imopen(I,se); imview(I_opened,[])Imageinfo(‘rice.png’)二、实现灰度图像的拉伸(代码)I = imread('rice.png');I1 = 2*I+5;%对其进行线性拉伸 2*I+5;subplot(1,2,1), imshow(I), title('原始图像')subplot(1,2,2), imshow(I1), title('f=2x+5')原始图像f=2x+5三、图像进行直方图均衡化处理(代码)4、编程实现对图像进行直方图均衡化处理,并将实验结果与Matab中imhist命令结果比较。
clear all;I=imread('rice.png');figure;subplot(221);imshow(I);subplot(222);imhist(I);I1=histeq(I);%直方图均衡化处理subplot(223);imshow(I1);subplot(224);imhist(I1);100200100200四、实验体会通过这次实验,让我认识到了到图像处理在我们生活中的应用。
,以及相应的直方图均衡化的方式和方法,收获颇丰实验二实验目的掌握数字图像增强的基本原理和方法,通过Matlab 编程实现图像的各种增强技术;掌握Matlab 软件图像处理工具箱中相关图像增强函数及用法。
实验内容1、利用灰度线性变换和非线性变换进行图像增强处理。
2、编程实现图像的平滑增强,分别采用3×3,6×6,8×8的窗口实现,比较窗口大小对图像平滑效果的影响。
下面给出了对应3×3平滑模板:11111119111⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦3、编程实现图像的锐化增强,分别采用Robert 梯度算子,prewiit 梯度算子,Laplace 算子实现,比较实现结果,说明每种算子的锐化特点;实验要求采用Matlab 自带图像或者自己找些图像,验证自己编写的图像增强图像函数的正确性,并与Matlab 工具箱中对应函数的处理结果比较,显示处理后结果,并将代码和显示结果整理在实验报告中。
实验结果用滤波器出去图像噪声: I1=imread('C:\123.png'); I=rgb2gray(I1);subplot(2,2,1),imshow(I),title('原始图像') h=ones(3,3); h=h/9; k=conv2(I,h);subplot(2,2,2),imshow(k,[]),title('3*3平滑增强')h1=ones(6,6);h1=h1/36;k1=conv2(I,h1);subplot(2,2,3),imshow(k1,[]),title('6*6平滑增强')h2=ones(8,8);h2=h2/64;k2=conv2(I,h2);subplot(2,2,4),imshow(k2,[]),title('8*8平滑增强')得到:原始图像3*3平滑增强6*6平滑增强8*8平滑增强滤波器程序为I=imread('C:\new123.png');I=rgb2gray(I);figure(1),imshow(I),title('输出原始图像');[x,y]=size(I);a=1;c=1;%算术均值滤波for i=1+a:x-afor j=1+c:y-cJ1(i,j)=sum(sum(I(i-a:i+a,j-c:j+c),1),2)/((2*a+1)*(2*c+1));endendfigure(2),imshow(J1),title('算术均值滤波后的图像')%几何均值滤波I1=double(I);for i=1+a:x-afor j=1+c:y-cJ2(i,j)=prod(prod(I1(i-a:i+a,j-c:j+c),1),2)^(1/((2*a+1)*(2*c+1)));endendfigure(3),imshow(J2),title('几何均值滤波后的图像')输出原始图像算术均值滤波后的图像几何均值滤波后的图像四、实验体会通过这次实验,让我认识到了到图像处理在我们生活中的应用。
,以及相应的图像滤波的集中方式,以及降低噪声均值滤波和中值滤波的差异以及方式和方法,收获颇丰实验(三)一、实验目的掌握Matlab中二值图像的基本逻辑运算符号;掌握膨胀和腐蚀的基本原理和作用,可以根据实际需要,熟练使用不用结构元素进行膨胀和腐蚀操作;掌握开运算和闭运算的基本原理作用,能够熟练使用开和闭运算对二值图像进行处理。
二、实验要求找Matlab自带图像或者自己找些图像,说明1中各个函数的调用格式和功能;按2中要求进行实验,显示处理后结果,并进行必要的文字说明;按3要求编写代码,并给出实验图像效果和结论。
三、实验内容题目A. 学习Matlab的图像处理工具箱中下列函数:rgb2gray( ), im2bw( ), graythresh( ), strel( ), imdilate( ), imerode( ), imopen( ), imclose( );clcclearfigure%rgb2gray()、将彩色图像转化为灰度图A='c:/cavin.jpg';I=imread(A);II=rgb2gray(I);imshow(II)%im2bw()、将图像转成二值图像I=imread(A);II=im2bw(I);%灰度图和彩图均可imshow(II)%graythresh()通过otsu方法得到图像二值化时的阀值I=imread(A);I=rgb2gray(I);J=edge(I,'canny',graythresh(I));subplot(1,2,1),imshow(I),title('原图')subplot(1,2,2),imshow(J),title('边界图')%strel()创建由指定形状shape对应的结构元素,其中shape的种类有'arbitrary'、'pair'、'diamond'、'periodicline'、'disk'、'rectangle'、'line'、'square'、'octagon’s1=strel('square',6)%创建6*6的正方形s2=strel('line',10,45)%创建直线长度10,角度45s3=strel('disk',15)%创建圆盘半径15s4=strel('ball',15,5)%创建椭圆体,半径15,高度5%imdilate()、实现图像膨胀BW=zeros(9,10);BW(4:6,4:7)=1;SE=strel('square',3);BW2=imdilate(BW,SE);figure(1),imshow(BW,'notruesize')figure(2),imshow(BW2,'notruesize')%imerode()、实现函数腐蚀BW1=imread(A);SE=sterl('arbitrary',eye(5));BW2=imerode(BW1,SE);imshow(BW1)figure,imshow(BW2)%imopen()、打开文件se = strel('disk',5);I_opened = imopen(A,se);figure, imshow(I_opened,[])%imclose()、关闭文件W = imclose(A,se);figure, imshow(closeBW)题目B. 运行下面一段代码,体会形态学图像处理的几个基本操作及其作用(1)A='c:/cavin.jpg';I = imread(A);I=rgb2gray(I)subplot(1,2,1),imshow(I),title('原始图片')h = [0 1 0; 1 1 1; 0 1 0];II = imdilate(I, h);subplot(1,2,2),imshow(II),title('膨胀后图片')尝试改变上面代码中结构元素的大小和形状,运行查看结果(2)A='c:/cavin.jpg';I = imread(A);I=rgb2gray(I)subplot(1,2,1),imshow(I),title('原始图片')se = strel('disk', 10);II = imerode(I, se);subplot(1,2,2),imshow(II),title('腐蚀后图片')原始图片膨胀后图片将上面的结构元素大小分别改为5和20,运行代码,并与上面的结果比较并说明差异。