MATLAB数字图像处理实验--图像基本运算

MATLAB数字图像处理实验--图像基本运算

一、实验目的

1.理解图像点运算、代数运算、几何运算的基本定义和常见方法;

2.掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法;

3.掌握在MATLAB中进行插值的方法

4.运用MATLAB语言进行图像的插值缩放和插值旋转

5.进一步熟悉了解MATLAB语言的应用。

二、实验设备与软件

1.PC计算机系统

2.MATLAB软件,包括图像处理工具箱(Image Processing Toolbox)

3.实验图片

三、实验内容及结果分析

3.1图像的点运算

选择pout.tif作为实验图像,实验原理及内容参照《MATLAB图像处理编程及应用》

程序代码:

I=imread('pout.tif');

figure;

subplot(1,3,1);

imshow(I);

title('原图');

J=imadjust(I,[0.3;0.6],[0.1;0.9]);

subplot(1,3,2);

imshow(J);

title('线性扩展');

I1=double(I);

I2=I1/255;

C=2;

K=C*log(1+I2);

subplot(1,3,3);

imshow(K);

title('非线性扩展');

M=255-I;

figure;

subplot(1,3,1);

imshow(M);

title('灰度倒置');

N1=im2bw(I,0.4);

N2=im2bw(I,0.7);

subplot(1,3,2);

imshow(N1);

title('二值化阈值0.4');

subplot(1,3,3);

imshow(N2);

title('二值化阈值0.7');

执行结果:

原图线性扩展非线性扩展

灰度倒置二值化阈值0.4二值化阈值0.7

实验1结果图

3.2图像的代数运算

选择两幅图像,一幅是原图像,一幅为背景图像,采用正确的图像代数运算方法,分别实现图像叠加、混合图像的分离和图像的局部显示效果。

(1)选取两幅大小一样的图像1.jpg和2.jpg,将两幅图像进行加法运算。

程序代码:

clc;

clear;

I1=imread('1.jpg');

I2=imread('2.jpg');

I1=im2double(I1);

I2=im2double(I2);

K=0.5*I1+0.5*I2;

subplot(1,3,1);imshow(I1);title('原图像');

subplot(1,3,2);imshow(I2);title('背景图像');

subplot(1,3,3);imshow(K);title('相加后的图像');

imwrite(K,'1_2.jpg');

执行结果:

原图像背景图像相加后的图像

图像的叠加实验结果

结果分析:

两个矩阵相加,执行点对点运算,两边操作数的矩阵必须是同型的。

若K=I1+0.5*I2,则图像结果溢出,修改程序结果如上。多个图像相加不产生溢出的条件是所有图像叠加不能超过数据类型所支持的最大值(各系数之和不大于1)。如果把I1=im2double(I1)改成I1=double(I1)则程序执行结果是“原图像”和“相加后的图像”都溢出。

(2)选择(1)中得到的混合图像12.jpg,将混合图像与背景图像2.jpg做减法运算,得到源图像。

程序代码:

clc;

clear;

I3=imread('1_2.jpg');

I4=imread('2.jpg');

I3=im2double(I3);

I4=im2double(I4);

C=(I3-0.5*I4)*2;

subplot(1,3,1);imshow(I3);title('混合图像');

subplot(1,3,2);imshow(I4);title('背景图像');

subplot(1,3,3);imshow(C);title('分离后的图像');

执行结果:

混合图像背景图像分离后的图像

图像的分离实验结果

(3)程序实现一幅尺寸为MXN像素的图像作为掩模模板(M、N的大小与源图像一致),对于需要留下来的区域,掩模图像的像素值置为1,而在需要被抑制掉的区域,掩模图像的像素值置为0(可以使用图像3.jpg)

程序代码:

clc;

clear;

I5=imread('3.jpg');

I5=im2double(I5);

I=zeros(264,352,3);

I(32:232,26:326,:)=1;

D=I5.*I;

subplot(1,3,1);imshow(I5);title('原图像');

subplot(1,3,2);imshow(I);title('模板图像');

subplot(1,3,3);imshow(D);title('局部图像');

执行结果:

原图像模板图像局部图像

图像的局部效果图

3.3图像的缩放

对一幅图像实现按比例缩小和不按比例任意缩小的效果,以及图像的成倍放大和不按比例放大效果。选取一幅图像3.jpg,分别将图像比例放大1.5倍,比例缩小0.7倍,非比例放大到620×380像素,非比例缩小到80×180像素。

程序代码:

clc;

clear;

I1=imread('3.jpg');

I2=imresize(I1,1.5);

I3=imresize(I1,0.7);

I4=imresize(I1,[620,380]);

I5=imresize(I1,[80,180]);

figure;

imshow(I1);title('原图像');

figure;

subplot(2,2,1);imshow(I2);title('比例放大1.5倍图');

subplot(2,2,2);imshow(I3);title('比例放大0.7倍图');

subplot(2,2,3);imshow(I4);title('非比例放大图');

subplot(2,2,4);imshow(I5);title('非比例缩小图');

执行结果:

原图像

比例放大1.5倍图比例放大0.7倍图

非比例放大图

非比例缩小图

图像的缩放实验结果图

3.4图像的旋转

将图像lena.tiff分别旋转45度和90度,与原图像相比,观察它们的区别。

读取图像lena.tiff,设置旋转角度分别45度和90度,采用图像旋转函数imrotate对图像进行旋转。

程序代码:

clc;

clear;

I=imread('lena.tiff');

J=imrotate(I,45);

K=imrotate(I,90);

subplot(1,3,1);imshow(I);title('原图像');

subplot(1,3,2);imshow(J);title('旋转45度图像');

subplot(1,3,3);imshow(K);title('旋转90度图像');

执行结果:

原图像旋转45度图像旋转90度图像

图像的旋转实验结果图

3.5.实验要求设计一个程序完成下列要求。(图像可以自选,如lena.tiff)

(1)给一幅图像加入密度为0.06椒盐噪声后并与前一张图显示在同一图像对话框中;

程序代码:

clc;

clear;

I=imread('lena.tiff');

J=imnoise(I,'salt & pepper',0.06);

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imshow(J),title('加椒盐噪声');

执行结果:

原图像加椒盐噪声

实验5(1)结果图

(2)给一幅图像加入均值为0,方差为0.01的高斯噪声后并与前一张图显示在同一图像对话框中;

程序代码:

clc;

clear;

I=imread('lena.tiff');

J=imnoise(I,'gaussian',0,0.01);

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imshow(J),title('加高斯噪声');

执行结果:

原图像加高斯噪声

实验5(2)结果图

(3)运用for循环,将100幅加有噪声的图像进行相加并求其平均值,显示求平均后图像。比较均值去噪方法对零均值高斯和椒盐两张噪声的去噪效果。

程序代码:

clc;

clear;

I=imread('lena.tiff');

K1=zeros(512,512);

K2=zeros(512,512);

for i=1:100

J1=imnoise(I,'gaussian',0,0.01);

J2=imnoise(I,'salt & pepper',0.01);

J1=im2double(J1);

J2=im2double(J2);

K1=K1+J1;

K2=K2+J2;

end

K1=K1/100;

K2=K2/100;

subplot(1,2,1),imshow(K1),title('高斯噪声相加求平均后的图像');

subplot(1,2,2),imshow(K2),title('椒盐噪声相加求平均后的图像');

执行结果:

高斯噪声相加求平均后的图像椒盐噪声相加求平均后的图像

实验5(3)结果图

(4)观察图像pout.tif 的直方图; 程序代码: clc; clear;

I=imread('pout.tif');

subplot(1,2,1),imshow(I),title('原图像'); subplot(1,2,2),imhist(I),title('图像的直方图');

执行结果:

原图像

图像的直方图

实验5(4)结果图

(5)利用matlab 的imadjust 函数实现的图像pout.tif 对比度增强。 程序代码:

clc; clear;

I=imread('pout.tif'); J=imadjust(I,[0.3 0.7],[]);

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imshow(J),title('对比度增强后的图像');

执行结果:

原图像

对比度增强后的图像

实验5(5)结果图

4.思考题

(1)为什么用I = imread(‘lena.bmp’) 命令得到的图像I 不可以进行算术运算?

答:不同类型的图像其存储的结构也是不同的,图像运算只能对同种类型的图像矩阵进行运算。

(2)常见的几何变换有哪些?

答:图像的平移,旋转、镜像和缩放等。

(3)多幅图像平均的降噪方法对哪种噪声类型比较有效?

答:对高斯噪声的降噪效果比较好。

(4)在一个线性拉伸变换中,当a,b取何值时,可以将灰度值分别从23和155变换为16和240?

答:由公式S=ar+b;

得:16=23a+b; 240=155a+b;

解得:a=1.7; b=-23;

5.附加题(选作)

试着自选一幅人像和一幅背景图像,综合利用图像基本运算方法给人像加上矩形背景相框,相框上下的宽度为100像素,左右的宽度为50像素,或者根据所选图像的分辨率自行设置相框各方向的宽度。

程序代码:

clc;

clear;

I=imread('lena.jpg');

I=im2double(I);

A=zeros(512,512,3);

A(12:500,12:500,:)=1;%相框上下、左右均为12像素

J=A.*I;

imshow(J);

执行结果:

四、实验中遇到问题及解决方法

实验中遇到的问题:在实现图像点运算时,没有注意彩色图像和灰度图像是不能直接运算的,要保证两边操作数的矩阵必须是同型的。解决方法:将两边图像转化为三通道的彩色图像进行相运算,或者通过rgb2gray()函数将两边图像转化为灰色图像,然后进行运算。五、实验心得体会

通过此次实验,我学会了利用MATLAB实现图像的点运算、代数运算、几何运算,了解了其实验原理;还掌握了在MATLAB中进行插值的方法并运用MATLAB语言进行图像的插值缩放和插值旋转。通过解决了实验中遇到的一些问题,进一步熟悉了解MATLAB语言。

六、源程序清单(加上必要的注释,注释“%”开头)

%%

%1.图像的点运算

I=imread('pout.tif');

figure;

subplot(1,3,1);

imshow(I);

title('原图');

J=imadjust(I,[0.3;0.6],[0.1;0.9]);

subplot(1,3,2);

imshow(J);

title('线性扩展');

I1=double(I);

I2=I1/255;

C=2;

K=C*log(1+I2);

subplot(1,3,3);

imshow(K);

title('非线性扩展');

M=255-I;

figure;

subplot(1,3,1);

imshow(M);

title('灰度倒置');

N1=im2bw(I,0.4);

N2=im2bw(I,0.7);

subplot(1,3,2);

imshow(N1);

title('二值化阈值0.4');

subplot(1,3,3);

imshow(N2);

title('二值化阈值0.7');

%%

%2.图像的代数运算(1)

clc;

clear;

I1=imread('1.jpg');

I2=imread('2.jpg');

I1=im2double(I1);

I2=im2double(I2);

K=0.5*I1+0.5*I2;

subplot(1,3,1);imshow(I1);title('原图像'); subplot(1,3,2);imshow(I2);title('背景图像'); subplot(1,3,3);imshow(K);title('相加后的图像'); imwrite(K,'1_2.jpg');

%%

%2.图像的代数运算(2)

clc;

clear;

I3=imread('1_2.jpg');

I4=imread('2.jpg');

I3=im2double(I3);

I4=im2double(I4);

C=(I3-0.5*I4)*2;

subplot(1,3,1);imshow(I3);title('混合图像'); subplot(1,3,2);imshow(I4);title('背景图像'); subplot(1,3,3);imshow(C);title('分离后的图像'); %%

%2.图像的代数运算(3)

clc;

clear;

I5=imread('3.jpg');

I5=im2double(I5);

I=zeros(264,352,3);

I(32:232,26:326,:)=1;

D=I5.*I;

subplot(1,3,1);imshow(I5);title('原图像'); subplot(1,3,2);imshow(I);title('模板图像'); subplot(1,3,3);imshow(D);title('局部图像'); %%

%3.图像的缩放

clc;

clear;

I1=imread('3.jpg');

I2=imresize(I1,1.5);

I3=imresize(I1,0.7);

I4=imresize(I1,[620,380]);

I5=imresize(I1,[80,180]);

figure;

imshow(I1);title('原图像');

figure;

subplot(2,2,1);imshow(I2);title('比例放大1.5倍图'); subplot(2,2,2);imshow(I3);title('比例放大0.7倍图'); subplot(2,2,3);imshow(I4);title('非比例放大图'); subplot(2,2,4);imshow(I5);title('非比例缩小图');

%%

%4.图像的旋转

clc;

clear;

I=imread('lena.tiff');

J=imrotate(I,45);

K=imrotate(I,90);

subplot(1,3,1);imshow(I);title('原图像');

subplot(1,3,2);imshow(J);title('旋转45度图像'); subplot(1,3,3);imshow(K);title('旋转90度图像');

%%

%5(1)

clc;

clear;

I=imread('lena.tiff');

J=imnoise(I,'salt & pepper',0.06);

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imshow(J),title('加椒盐噪声');

%%

%5(2)

clc;

clear;

I=imread('lena.tiff');

J=imnoise(I,'gaussian',0,0.01);

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imshow(J),title('加高斯噪声');

%%

%5(3)

clc;

clear;

I=imread('lena.tiff');

K1=zeros(512,512);%初始化图像累加器,矩阵大小要与I一致K2=zeros(512,512);

for i=1:100

J1=imnoise(I,'gaussian',0,0.01); %零均值高斯噪声

J2=imnoise(I,'salt & pepper',0.01);%椒盐噪声

J1=im2double(J1);

J2=im2double(J2);

K1=K1+J1;

K2=K2+J2;

end

K1=K1/100;%求图像的平均

K2=K2/100;

subplot(1,2,1),imshow(K1),title('高斯噪声相加求平均后的图像'); subplot(1,2,2),imshow(K2),title('椒盐噪声相加求平均后的图像'); %%

%5(4)

clc;

clear;

I=imread('pout.tif');

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imhist(I),title('图像的直方图');

%%

%5(5)

clc;

clear;

I=imread('pout.tif');

J=imadjust(I,[0.3 0.7],[]);

subplot(1,2,1),imshow(I),title('原图像');

subplot(1,2,2),imshow(J),title('对比度增强后的图像');

%%

%附加题

clc;

clear;

I=imread('lena.jpg');

I=im2double(I);

A=zeros(512,512,3);

A(12:500,12:500,:)=1;%相框上下、左右均为12像素

J=A.*I;

imshow(J);

数字图像处理实验一图像的基本操作和基本统计指标计算实验报告

实验一图像的基本操作和基本统计指标计算 一、实验目的 熟悉MATLAB图像处理工具箱,在掌握MATLAB基本操作的基础上,本课程主要依靠图像处理工具箱验证和设计图像处理算法。对于初学者来说,勤学多练、熟悉MATLAB图像处理工具箱也是学号本课程的必经之路。 了解计算图像的统计指标的方法及其在图像处理中的意义。 了解图像的几何操作,如改变图像大小、剪切、旋转等。 二、实验主要仪器设备 (1)台式计算机或笔记本电脑 (2)MATLAB(安装了图像处理工具箱,即Image Processing Toolbox(IPT)) (3)典型的灰度、彩色图像文件 三、实验原理 (1)将一幅图像视为一个二维矩阵。 (2)利用MATLAB图像处理工具箱读、写和显示图像文件。 ①调用imread函数将图像文件读入图像数组(矩阵)。例如“I=imread(‘tire.tif’);”。其基本格式为:“A=imread(‘filename.fmt’)”,其中,A为二维矩阵,filename.为文件名,fmt 为图像文件格式的扩展名。 ②调用imwrite函数将图像矩阵写入图像文件。例如“imwrite(A,’test_image.jpg’);”。其基本格式为“imwrite(a,filename.fmt)”。 ③调用imshow函数显示图像。例如“imshow(‘tire.tif’);”。其基本格式为:I为图像矩阵,N为显示的灰度级数,默认时为256。 (3)计算图像有关的统计参数。 四、实验内容 (1)利用MATLAB图像处理工具箱和Photoshop读、写和显示图像文件。 (2)利用MATLAB计算图像有关的统计参数。 五、实验步骤 (1)利用“读图像文件I/O”函数读入图像Italy.jpg。 (2)利用“读图像文件I/O”的iminfo函数了解图像文件的基本信息:主要包括Filename(文件名)、FileModDate(文件修改时间)、Filesize(文件尺寸)、Format(文件格式)、FormatVersion (格式版本)、Width(图像宽度)、Height(图像高度)、BitDepth(每个像素的位深度)、ColorType (彩色类型)、CodingMethod(编码方法)等。 (3)利用“像素和统计处理”函数计算读入图像的二维相关系数(corr2函数)、确定像素颜色值(impixel函数)、确定像素的平均值(mean2函数)、显示像素信息(pixval函数)、计算像素的标准偏移(std2函数)等。 要求:参照例题2.1,对图像J加均值为0、方差为0.01的高斯白噪声形成有噪图像J1,即“J1=imnoise(J,’gaussian’,0,0.01);”,求J1的像素总个数、图像灰度的平均值、标准差、J和J1的互协方差和相关系数、J和K的互协方差和相关系数。

用matlab数字图像处理四个实验

数字图像处理 实验指导书

目录 实验一 MATLAB数字图像处理初步实验二图像的代数运算 实验三图像增强-空间滤波 实验四图像分割 3

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images)

MATLAB数字图像处理实验--图像基本运算

MATLAB数字图像处理实验--图像基本运算 一、实验目的 1.理解图像点运算、代数运算、几何运算的基本定义和常见方法; 2.掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法; 3.掌握在MATLAB中进行插值的方法 4.运用MATLAB语言进行图像的插值缩放和插值旋转 5.进一步熟悉了解MATLAB语言的应用。 二、实验设备与软件 1.PC计算机系统 2.MATLAB软件,包括图像处理工具箱(Image Processing Toolbox) 3.实验图片 三、实验内容及结果分析 3.1图像的点运算 选择pout.tif作为实验图像,实验原理及内容参照《MATLAB图像处理编程及应用》 程序代码: I=imread('pout.tif'); figure; subplot(1,3,1); imshow(I); title('原图'); J=imadjust(I,[0.3;0.6],[0.1;0.9]); subplot(1,3,2); imshow(J); title('线性扩展'); I1=double(I); I2=I1/255; C=2; K=C*log(1+I2); subplot(1,3,3); imshow(K); title('非线性扩展'); M=255-I; figure; subplot(1,3,1); imshow(M); title('灰度倒置'); N1=im2bw(I,0.4); N2=im2bw(I,0.7);

subplot(1,3,2); imshow(N1); title('二值化阈值0.4'); subplot(1,3,3); imshow(N2); title('二值化阈值0.7'); 执行结果: 原图线性扩展非线性扩展 灰度倒置二值化阈值0.4二值化阈值0.7 实验1结果图 3.2图像的代数运算 选择两幅图像,一幅是原图像,一幅为背景图像,采用正确的图像代数运算方法,分别实现图像叠加、混合图像的分离和图像的局部显示效果。 (1)选取两幅大小一样的图像1.jpg和2.jpg,将两幅图像进行加法运算。 程序代码: clc; clear; I1=imread('1.jpg'); I2=imread('2.jpg'); I1=im2double(I1); I2=im2double(I2); K=0.5*I1+0.5*I2; subplot(1,3,1);imshow(I1);title('原图像'); subplot(1,3,2);imshow(I2);title('背景图像'); subplot(1,3,3);imshow(K);title('相加后的图像'); imwrite(K,'1_2.jpg');

实验一 MATLAB数字图像处理初步

实验一MATLAB数字图像处理初步 一、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 程序及结果: clc,clear,close all; I=imread('flower.tif'); % 读入原图像,tif格式 whos I % 显示图像I的基本信息 imshow(I) % 显示图像 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;

5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 clc,clear,close all; I=imread('flower.tif'); % 读入原图像,tif格式 % 这种格式知识用于jpg格式,压缩存储图像,q是0-100之间的整数 imfinfo ('flower.tif') imwrite(I,'flower.jpg','quality',10); imwrite(I,'flower.bmp'); % 以位图(BMP)的格式存储图像 flower.tif

flower.jpg Flower.bmp 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小; 9.用figure,imshow()分别将Lenna.jpg和camema.jpg显示出来,观察两幅图像的质量。 clc,clear,close all; I1=imread('Lenna.tif'); imfinfo('Lenna.tif'); imwrite(I1,'Lenna.jpg','quality',10); figure(1);imshow('Lenna.jpg');

matlab数字图像处理实验报告

《数字图像处理实验报告》

实验一图像的增强 一.实验目的 1.熟悉图像在MATLAB下的读写、输出; 2.熟悉直方图; 3.熟悉图像的线性指数等; 4.熟悉图像的算术运算和几何变换。 二.实验仪器 计算机、MATLAB软件 三.实验原理 图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。 其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。 频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。假定原图像为f(x,y),经傅立叶变换

为F(u,v)。频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。 四.实验内容及步骤 1.图像在MATLAB下的读写、输出; 实验过程: >> I = imread('F:\image\'); figure;imshow(I);title('Original Image'); text(size(I,2),size(I,1)+15, ... '', ... 'FontSize',7,'HorizontalAlignment','right'); Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86 In imshow at 196 2.给定函数的累积直方图。 >> clear all; close all; >> r=127; x=-r:r+1; sigma=20; y1=exp(-((x-80).^2)/(2*sigma^2)); y2=exp(-((x+80).^2)/(2*sigma^2)); y=y1+y2; %双峰高斯函数,任意函数都可

基本数字图像处理算法的matlab实现

基本数字图像处理算法的matlab实现 1.数字图像处理的简单介绍 所谓数字图像就是把传统图像的画面分割成为像素的小的离散点,各像素的灰度值也是用离散值来表示的; 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术; 2.图像的显示与运算 图像的显示 Matlab显示语句 imshowI,lowhigh %图像正常显示 I为要显示的图像矩阵;,lowhigh为指定显示灰度图像的灰度范围;高于high的像素被显示成白色;低于low的像素被显示成黑色;介于high和low之间的像素被按比例拉伸后显示为各种等级的灰色; subplotm,n,p 打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上; 图像的运算 灰度化将彩色图像转化成为灰度图像的过程成为图像的灰度化处理;彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万255255255的颜色的变化范围;而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理

种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些;灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征;图像的灰度化处理可用两种方法来实现; 第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量; 第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=++,以这个亮度值表达图像的灰度值; 灰度是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率; 图像增强的目标是改进图片的质量,例如增加对比度,去掉模糊和噪声,修正几何畸变等;图像复原是在假定已知模糊或噪声的模型时,试图估计原图像的一种技术; Matlab图像格式转换语句 rgb2grayI %从RGB图创建灰度图 imhistI %画灰度直方图 图像的线性变换 D B=fD A=f A D A+f B Matlab源代码: I1=imread'F:\图片'; subplot2,2,1;imshowI1;title'原图'; I2=rgb2grayI1; %灰度化图像

MATLAB数字图像处理实验

数字图像处理实验 图像处理实验(一)直方图 灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特征更加明显。 灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像增强。 1、灰度直方图 (1)计算出一幅灰度图像的直方图 clear close all I=imread('004.bmp'); imhist(I) title('实验一(1)直方图'); (2)对灰度图像进行简单的灰度线形变换, figure subplot(2,2,1) imshow(I); title('试验2-灰度线性变换'); subplot(2,2,2) histeq(I); (3)看其直方图的对应变化和图像对比度的变化。 原图像 f(m,n) 的灰度范围 [a,b] 线形变换为图像 g(m,n),灰度范围 [a’,b’] 公式:g(m,n)=a’+(b’-a’)* f(m,n) /(b-a) figure subplot(2,2,1) imshow(I) J=imadjust(I,[0.3,0.7],[0,1],1); title(' 实验一(3)用g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)进行变换 '); subplot(2,2,2) imshow(J) subplot(2,2,3) imshow(I) J=imadjust(I,[0.5 0.8],[0,1],1); subplot(2,2,4) imshow(J) (4) 图像二值化(选取一个域值,(5) 将图像变为黑白图像) figure subplot(2,2,1) imshow(I) J=find(I<150); I(J)=0; J=find(I>=150); I(J)=255;

MATLAB数字图像处理基础实验

MATLAB数字图像处理基础实验(转) 一、实验目的 1、复习MATLAB语言的基本用法; 2、掌握MATLAB语言中图象数据与信息的读取方法; 3、掌握在MATLAB中绘制灰度直方图的方法,了解灰度直方图的均衡化的方法。 二、实验原理 MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计算平台,它几乎能够满足所有的计算需求。 MATLAB软件具有很强的开放性和适用性。在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox)。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。在实验中我们主要用到MATLAB提供图象处理工具箱(Image Processing Toolbox)。 1、MATLAB与数字图像处理 MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。实际上MATLAB 中的绝大多数的运算都是通过矩阵这一形式进行的。这一特点也就决定了MATLAB在处理数字图像上的独特优势。理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。二维图像进行均匀采样,就可以得到一幅离散化成M×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。而MATLAB的长处就是处理矩阵运算,因此用MATLAB处理数字图像非常的方便。 MATLAB支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读,写和显示。MATLAB对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。 2、MATLAB语言的基本操作 MATLAB语言是一种运算纸型的运算语言,其特点就是与平时在运算纸上书写运算的形式相同,这使得它成为一种比较容易掌握的语言;其变量均以矩阵向量形式表示(单独一个数据可以认为是一维向量);其程序语法类似于C语言,只要有一点C语言基础的人可以很快掌握。针对数字图象处理的需要,可以重点掌握以下几个内容:矩阵、向量的输入和操作(包括如何输入一个矩阵,如何产生一个全零全一的矩阵,如何对一个矩阵的行列元素进行读取、写入);矩阵与向量的基本运算(包括加、减、点乘等) 以下主要介绍一下如何读取矩阵的指定行或指定列,举例说明: x=4:6%产生一个一维数组,范围从4到6,步长为1 x = 4 5 6 插入:通过对x进行插入运算创建矩阵A >> A=[x-3;x;x+3] %当然也可以用别的方法产生A矩阵此处只作为示例

《数字图像处理:Matlab算法设计与解译》实验指导书 实验1-图像垂直镜像运算编程实验

实验1 图像垂直镜像运算编程实验 第一部分目的与要求 1.1 实验目的 (1)理解图像垂直镜像运算的基本原理。 (2)了解和熟悉基于Matlab软件环境的图像算法仿真验证思路和方法。 (3)熟悉常用的Matalb函数,初步掌握利用Matlab编程实现图像垂直镜像运算的思路和方法。 1.2 实验内容及要求 (1)利用Matlab语言环境编写实现图像垂直镜像运算的程序。 (2)对比地显示(原图像在第一行、垂直镜像结果图像在第二行)原图像和结果图像。 1.3 编程涉及的部分Matlab函数 (1)%:注释符号,在其后的同一行中的内容是注释,不会被执行。 (2)clc:清除命令窗口中的内容。 (3)clear all:清除工作空间的所有变量、函数和MEX文件。 (4)close all:关闭所有的Figure窗口。 (5)imread('path_filename'):读入指定路径及文件名为path_filename的图像。 (6)[m, n, color]=size(I):获取图像矩阵I的行数h和列数w及颜色数color。当color值等于3时,说明图像I是彩色图像。缺省color的形式为[m, n]=size(I)。 (7)subplot(m, n, p):将多幅图像输出到一个平面(figure)上。其中,m表示将图像排成m 行,n表示将图像排成n列,也即整个figure中有n幅图像排成一行,一共m行。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。 (8)imshow(I,[low high]):显示灰度图像 I,并以二元素向量[low high]指定显示范围。

实验一Matlab语言及数字图像处理基本操作

实验一 Matlab语言及数字图像处理基本操作 一、实验目的 1、学习MATLAB语言的基本用法; 2、掌握MATLAB语言中图像数据与信息的读取方法; 3、掌握在MATLAB中绘制灰度直方图的方法; 4、掌握灰度直方图的均衡化的方法; 5、利用基本灰度变换对图像进行增强 二.实验环境及开发工具 Windws XP、MATALAB7.0 三.实验原理及方法 1、验证MATLAB中图像数据的读写及显示 (1)imread imread函数用于读入各种图像文件,其一般的用法为 [X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。 (2)imwrite

imwrite函数用于输出图像,其语法格式为: imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。 (3)imfinfo imfinfo函数用于读取图像文件的有关信息,其语法格式为 imfinfo(filename,fmt) imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。 (4)MATLAB中图像文件的显示 imshow imshow函数是最常用的显示各种图像的函数,其语法如下: imshow(X,map) 其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。 需要显示多幅图像时,可以使用figure语句,它的功能就是重新打开一个图像显示窗口。 2、验证图像对比度增强函数Imadjust

《数字图像处理(实验部分)》实验4_算术运算

《数字图像处理(实验部分)》教案 实验四:算术运算 1.实验目的 1.掌握MATLAB 的基本操作。 2.了解数字图像处理在MATLAB中的基本处理过程。 3.学习算术运算的原理,观察算法处理结果 2.实验设备 2.1.PC 兼容机一台;操作系统为WindowsWindowsXP。 2.2.数字图像处理开发环境:MATLAB软件 3.实验原理 加运算:C(x,y)=A(x,y)+B(x,y) 多幅图像求和后取平均,可以降低加性随机噪声 4.实验步骤 .1 打开MA TLAB开发环境 .2点击MA TLAB窗口上File菜单,选择New-〉M—File,在弹出的Edit编辑器内输入如下程序: I=imread('pout.tif'); % 读取MATLAB自带的potu.tif图像 figure(1);imshow(I); g1=imnoise(I,'salt & pepper',0.01);% 叠加密度为0.01的椒盐噪声 g2=imnoise(I,'salt & pepper',0.02); g3=imnoise(I,'salt & pepper',0.03); g4=imnoise(I,'salt & pepper',0.04);% 叠加密度为0.04的椒盐噪声 g5=imnoise(I,'salt & pepper',0.05); g6=imnoise(I,'salt & pepper',0.06); g= 0.2*g1+0.2*g2+0.2*g3+0.2*g4+0.1*g5+0.1*g6; subplot(2,4,1),imshow(I);title('原图'); subplot(2,4,2),imshow(g1);title('噪声图1'); subplot(2,4,3),imshow(g2);title('噪声图2');

MATLAB数字图像处理初步

电子信息工程学系实验报告——适用于计算机课程课程名称:数字图像处理 成绩: 实验项目名称:MATLAB数字图像处理初步实验时间:3.25 指导教师(签名): 班级:姓名:学号: 实验目的: (1) 掌握图像代数运算和几何变换的基本原理 (2) 了解图像代数运算和几何变换的简单应用及MATLAB实现 实验设备与软件 (3) PC计算机系统 (4) MATLAB软件,包括图像处理工具箱(Image Processing Toolbox) (5) 实验图片 实验内容及过程: 1.图像的代数运算 选择两幅图像,一幅是源图像,一幅为背景图像,采用正确的图像代数运算方法,分别实现图像叠加、混合图像的分离和图像的局部显示效果。 (1)选取两幅大小一样的图像Fig2.22(a).jpg和finger.bmp,将两幅图像进行加法运算。程序如下:

(2)选择(1)中得到的混合图像lenna_finger.jpg,将混合图像与背景图像finger.bmp 做减法运算,得到源图像,程序如下: (3)程序实现一幅尺寸为300×300像素的灰度图像作为掩模模板,对于需要留下来的区域,

掩模图像的像素值置为1,而在需要被抑制掉的区域,掩模图像的像素值置为0,程序如下: 2.图像的缩放 对一幅图像实现按比例缩小和不按比例任意缩小的效果,以及图像的成倍放大和不按比例放大效果。 选取一幅灰度图像Fig2.22(a).jpg,分别将图像比例放大1.5倍,比例缩小0.7倍,非比例放大到620×380像素,非比例缩小到80×180像素。程序如下:

3.图像的旋转 将图像Fig12.18(a1).jpg分别旋转45度和90度,与原图像相比,观察它们的区别。 读取图像Fig12.18(a1).jpg,设置旋转角度分别45度和90度,采用图像旋转函数imrotate对图像进行旋转,程序如下:

数字图像处理 实验二 图像运算

实验二图像运算 一、实验目的 1.熟悉图像点运算和代数运算的实现方法; 2.了解图像几何运算的简单应用; 3.了解图像的邻域操作; 4.了解图像简单几何运算; 5.体会图像算术及几何运算处理的过程和处理前后图像的变化。 二、实验内容 1.图像点运算 读入图像‘rice.png’,通过图像点运算改变对比度。 rice=imread('rice.png'); subplot(131),imshow(rice) I=double(rice); %转换为双精度类型 J=I*0.43+60; rice2=uint8(J); %转换为uint8 subplot(132),imshow(rice2) J=I*1.5-60; rice3=uint8(J); %转换为uint8 subplot(133),imshow(rice3) 结果:略。 说明:(1)‘rice.png’亦可以换成任意其他图像;(2)运算时可以改变运算系数。 2.图像的代数运算 图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式: C(x,y) = A(x,y) + B(x,y) C(x,y) = A(x,y) - B(x,y) C(x,y) = A(x,y) * B(x,y) C(x,y) = A(x,y) / B(x,y) 图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。 使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。为了更方便地对图像进行操作,MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。下表列举了所有图像处理工具箱中的图像代数运算函数。

数字图像处理实验 2017

实验一 Matlab图像基本操作 一、实验目的 熟悉利用Matlab进行图像处理的基本操作,了解图像数据的存储形式及进行图像处理编程的步骤方法。 二、实验内容 1、图像读写与显示 重点函数:imread, imwrite, imshow 2、彩色图像灰度化 计算公式:Y = R*0.299 + G*0.587 + B*0.114 3、图像马赛克 局部平均,改变窗口大小比较处理结果,如取2×2、4×4或更大尺寸的窗口 4、图像平移 分别完成图像水平方向、竖直方向和两个方向的平移 三、实验要求 1、编写代码,完成各项实验内容 2、总结实验中遇到问题及解决方案,书写实验报告 实验二图像点运算 一、实验目的 理解图像灰度变换和直方图的概念,掌握灰度变换和直方图均衡化的原理及实现方法。 二、实验内容 1、线性灰度变换 2、非线性变换 =,修改指数γ观察图像效果,总结指数项γ合理取值的一般规律 s crγ 3、直方图 绘制直方图,观察图像效果与直方图的关系 4、直方图均衡化 利用直方图均衡化确定灰度变换关系,画出变换曲线及图像处理前后的直方图 三、实验要求 1、编写代码,完成各项实验内容 2、总结实验中遇到问题及解决方案,书写实验报告

实验三邻域运算 一、实验目的 1.巩固对图像增强的认识,明确图像空域处理的类型 2.理解图像平滑与图像锐化的概念 3.掌握图像模板卷积运算的实现方法 4.锻炼编程开发图像处理算法的能力 二、实验准备 1.了解图像处理点运算和邻域运算的区别 2.学习利用模板卷积的方法进行图像邻域运算 3.复习均值滤波和中值滤波的原理 4.列出常用的模板形式,思考中值滤波要用到的简单排序方法 5.分析对比图像平滑和图像锐化模板的差异 三、实验内容与步骤 1.列出常用的卷积模板 2.基于3×3的模板,编写均值滤波的处理程序,处理含有加性高斯噪声和椒盐噪声的图像,观察处理结果 3.编写中值滤波程序,处理相同的图像与均值滤波进行比较;改变模板尺寸观察处理结果 4.编程实现利用一阶微分算子和二阶拉普拉斯算子进行图像锐化的程序 5.对比不同的邻域运算结果,体会图像锐化与图像平滑的区别 四、实验报告与思考题 1.总结实验内容及步骤方法完成实验报告,报告中要求有关键代码的注释说明及程序运行和图像处理结果 2.实验报告中回答以下问题 (1)均值滤波和中值滤波分别适用于处理哪类图像? (2)图像平滑和图像锐化所采用的模板有什么不同? (3)邻域运算的模板尺寸对处理结果有什么影响?

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

学院:自动化学院班级:电081班 姓名:*** 学号:******** 2011年10月

实验一直方图均衡化 一、实验目的: 1. 熟悉图像数据在计算机中的存储方式; 2. 掌握图像直方图均衡化这一基本处理过程。 二、实验条件: PC微机一台和MATLAB软件。 三、实验内容: 1.读入图像数据到内存中,并显示读入的图像; 2.实现直方图均衡化处理,显示处理前后图像的直方图。 3.显示并保存处理结果。 四、实验步骤: 1.打开Matlab编程环境; 2.获取实验用图像。用’imread’函数将图像读入Matlab;用’imshow’函数显示读入的图像。 3.获取输入图像的直方图:用’imhist’函数处理图像。 4.均衡化处理:用’histeq’函数处理图像即可。 5.获取均衡化后的直方图并显示图像:用’imhist’和’imshow’函数。 6.保存实验结果:用’imwrite’函数处理。 五、实验程序及结果: 1、实验程序 subplot(6,2,1); i=imread('test1-1.jpg'); imhist(i);title('test1-1 hist'); subplot(6,2,2); i=im2double(i); imshow(i);title('test1-1 Ô-ͼÏñ'); subplot(6,2,3); s=histeq(i); imhist(s);title('test1-1 balancedhist'); subplot(6,2,4); imshow(s);title('test1-1 ¾ùºâ»¯ºóµÄͼÏñ');

数字图像处理 实验报告(完整版)

数字图像处理 实验一 MATLAB数字图像处理初步 一、显示图像 1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 实验结果如下图: 源代码: >>I=imread('lily.tif') >> whos I >> imshow(I) 二、压缩图像 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。7.用imread()读入图像Sunset.jpg和Winter.jpg; 8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小; 9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。

其中9的实验结果如下图: 源代码: 4~6(接上面两个) >>I=imread('lily.tif') >> imfinfo 'lily.tif'; >> imwrite(I,'lily.jpg','quality',20); >> imwrite(I,'lily.bmp'); 7~9 >>I=imread('Sunset.jpg'); >>J=imread('Winter.jpg') >>imfinfo 'Sunset.jpg' >> imfinfo 'Winter.jpg' >>figure(1),imshow('Sunset.jpg') >>figure(2),imshow('Winter.jpg') 三、二值化图像 10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。实验结果如下图: 源代码: >> I=imread('lily.tif') >>gg=im2bw(I,0.4);

数字图像处理实验(MATLAB版)

数字图像处理(MATLAB版) 实验指导书 (试用版) 湖北师范学院教育信息与技术学院 2009年4月试行

目录 实验一、数字图像获取和格式转换 2 实验二、图像亮度变换和空间滤波 6 实验三、频域处理7 实验四、图像复原9 实验五、彩色图像处理10 实验六、图像压缩11 实验七、图像分割13 教材与参考文献14

《数字图像处理》实验指导书 实验一、数字图像获取和格式转换 一、实验目的 1掌握使用扫描仪、数码相机、数码摄像级机、电脑摄像头等数字化设备以及计算机获取数字图像的方法; 2修改图像的存储格式;并比较不同压缩格式图像的数据量的大小。 二、实验原理 数字图像获取设备的主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等。各类设备都标明了它的光学分辨率和最大分辨率。分辨率的单位是dpi,dpi是英文Dot Per Inch的缩写,意思是每英寸的像素点数。 扫描仪扫描图像的步骤是:首先将欲扫描的原稿正面朝下铺在扫描仪的玻璃板上,原稿可以是文字稿件或者图纸照片;然后启动扫描仪驱动程序后,安装在扫描仪内部的可移动光源开始扫描原稿。为了均匀照亮稿件,扫描仪光源为长条形,并沿y方向扫过整个原稿;照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x方向的光带,又经过一组反光镜,由光学透镜聚焦并进入分光镜,经过棱镜和红绿蓝三色滤色镜得到的RGB三条彩色光带分别照到各自的CCD上,CCD将RGB光带转变为模拟电子信号,此信号又被A/D变换器转变为数字电子信号。至此,反映原稿图像的光信号转变为计算机能够接受的二进制数字电子信号,最后通过串行或者并行等接口送至计算机。扫描仪每扫一行就得到原稿x方向一行的图像信息,随着沿y方向的移动,在计算机内部逐步形成原稿的全图。扫描仪工作原理见图1.1。

相关主题
相关文档
最新文档