matlab数字图像处理程序

合集下载

MATLAB图像处理基础教程

MATLAB图像处理基础教程

MATLAB图像处理基础教程第一章:MATLAB图像处理简介MATLAB(Matrix Laboratory)是一种强大的数值计算和数据可视化软件,广泛应用于各个领域,包括图像处理。

图像处理是一门研究如何对数字图像进行分析、增强、重建和压缩的学科。

本教程将引导读者逐步了解MATLAB图像处理的基本概念和技术。

第二章:MATLAB图像的读取与显示在MATLAB中,可以使用imread函数读取不同格式的图像文件,并使用imshow函数显示图像。

此外,还可以使用imfinfo函数获取图像的详细信息,如分辨率、颜色空间和位深度等。

第三章:图像的灰度处理灰度处理是一种常见的图像预处理方法。

通过将彩色图像转换为灰度图像,可以减少图像的数据量,简化图像处理的复杂性。

在MATLAB中,可以使用rgb2gray函数将彩色图像转换为灰度图像,并使用imhist函数查看灰度图像的直方图。

第四章:图像的滤波处理滤波是一种常用的图像处理操作,用于对图像进行平滑、增强或去噪。

MATLAB提供了各种滤波函数,如均值滤波、中值滤波和高斯滤波等。

可以根据具体需求选择合适的滤波方法,并使用imfilter函数进行滤波处理。

第五章:图像的二值化处理图像的二值化是将图像转换为黑白两色的过程,常用于物体检测、识别和分割等应用。

在MATLAB中,可以使用im2bw函数将灰度图像转换为二值图像,并可以调整阈值来控制二值化的效果。

第六章:图像的几何变换几何变换是一种常见的图像处理操作,用于对图像进行旋转、缩放、平移和翻转等操作。

MATLAB提供了imrotate、imresize、imtranslate和flip函数等实现各种几何变换。

通过组合这些函数,可以实现复杂的图像变换。

第七章:图像的特征提取图像的特征提取是图像处理中的重要步骤,用于从图像中提取出具有代表性的信息。

在MATLAB中,可以使用各种特征提取函数,如imgradient、imhistogram和imcontour等。

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

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

数字图像处理实验一 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显示出来观察图像的特征。

实验1-Matlab基本与图像处理基本操作

实验1-Matlab基本与图像处理基本操作

图像处理工具箱简介
01
MATLAB图像处理工具箱是MATLAB软件中一个专门用于图像处理的工具箱, 它提供了一套完整的图像处理和分析工具,包括图像读取、显示、变换、滤波 、增强、分割、特征提取等功能。
02
该工具箱支持多种图像格式,如BMP、JPG、PNG、TIFF等,并提供了丰富的 图像处理函数和算法,方便用户进行图像处理和分析。
对未来学习的展望
• 深入学习图像处理算法:在未来的学习中,我们将进一步深入学习图像处理的 各种算法和原理,包括图像分割、特征提取、目标检测等,以便更好地应用在 实际问题中。
• 掌握更多图像处理软件:除了Matlab软件外,我们还将学习掌握其他常用的 图像处理软件,如OpenCV、Python图像处理库等,以便更灵活地处理各种 图像问题。
02
学习图像处理基本 操作
了解图像处理基本概念,学习图 像读取、显示、保存等基本操作。
03
掌握图像处理常用 函数
熟悉MATLAB中图像处理工具箱 的常用函数,如图像调整、滤波、 边缘检测等。
实验环境准备
MATLAB软件
确保计算机已安装MATLAB软件,并熟悉软件基 本操作。
图像处理工具箱
安装并配置MATLAB图像处理工具箱,以便进行 图像处理实验。
• 加强实验数据分析处理能力:在未来的实验中,我们将更加注重实验数据的分 析和处理,学习掌握更多的数据处理方法和技巧,以便更准确地评估实验结果 和性能。
• 拓展应用领域:图像处理技术在实际应用中具有广泛的应用领域,如医学影像 处理、智能交通、安全监控等。在未来的学习中,我们将积极探索这些应用领 域,并尝试将所学的图像处理技术应用到实际问题中。
使用图像处理工具箱中的特 征提取函数和分类器函数, 对图像进行特征提取和分类 识别。例如,可以使用灰度 共生矩阵提取图像纹理特征, 然后使用支持向量机(SVM) 进行分类识别。

数字图像处理课程设计基于Matlab的数字图像处理

数字图像处理课程设计基于Matlab的数字图像处理

数字图像处理课程设计--基于Matlab的数字图像处理数字图像处理课程设计基于Matlab的数字图像处理——图像的运算院系信息技术学院专业班级电气6班学号 201107111282姓名何英娜指导教师章瑞平课程设计时间 2012年11月目录一、摘要 (3)二、图像代数运算1、1图像的加法运算 (4)1、2图像的减法运算 (4)1、3图像的除法运算 (4)1、4绝对差值运算 (7)1、 5 图像的求补运算 (7)3三、图像的几何运算2、1 图像插值 (7)2、2图像的旋转 (8)2、3图像的缩放 (9)2、4图像的投影变换 (10)2、4图像的剪切 (11)四、课程设计总结与体会 (13)五、参考文献 (14)摘要图像运算涵盖程序设计、图像点运算、代数运算、几何运算等多种运算;设计目的和任务:1、熟悉图像点运算、代数运算、几何运算的基本定义和常见方法;2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法3、掌握在MATLAB中进行插值的方法4、运用MATLAB语言进行图像的插值缩放和插值旋转5、学会运用图像的投影变换和图像的剪切46、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际7、通过各类算法加强图像各种属性、一、图像的几何运算何运算图像代数运算是指对两幅或两幅以上输入图像对应的像素逐个进行和差积商运算以产生增强效果的图像。

图像运算是一种比较简单有效的增强处理手段是图像处理中常用方法。

四种图像处理代数运算的数学表达式如下: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)1图像加法运算一般用于多幅图像求平均效果,以便有效降低具有叠加性的随机噪声,在matlab中imadd用于图像相加,其调用格式为z=imadd(X,Y);程序演示如下:I=imread('rice.png');subplot(2,2,1),imshow(I),title('原图像1'); J=imread('cameraman.tif');subplot(2,2,2),imshow(J),title('原图像52');K=imadd(I,J,'uint16'););subplot(2,2,3),imshow(K,[]),title('相加后图像'2、图像减法运算也称差分运算,是用于检测图像变化及运动物体的方法;用imsubtract函数实现。

如何使用Matlab进行多媒体数据处理和编码

如何使用Matlab进行多媒体数据处理和编码

如何使用Matlab进行多媒体数据处理和编码多媒体数据处理和编码在现代科技领域扮演着至关重要的角色。

随着数字化时代的到来,人们对图像、音频和视频等多媒体数据的处理和编码需求越来越高。

在这个过程中,Matlab作为一种强大的数学建模和计算工具,已经成为许多科研工作者和工程师们的首选。

本文将介绍如何使用Matlab进行多媒体数据的处理和编码。

一、数字图像处理数字图像处理是处理和分析数字图像的一门学科。

Matlab提供了丰富的图像处理工具箱,方便我们进行图像的读取、显示、变换、增强、滤波、分割等各种操作。

1. 图像的读取和显示使用Matlab进行图像处理的第一步是将图像读取进来,并显示出来。

Matlab提供了imread()函数来读取图像文件,并通过imshow()函数将图像显示在屏幕上。

2. 图像的变换在图像处理中,常常需要对图像进行各种变换,例如灰度变换、空间变换和频率变换等。

Matlab提供了灰度变换函数imadjust()、空间变换函数imresize()、imrotate()和频率变换函数fft2()等,方便我们对图像进行各种变换操作。

3. 图像的增强图像增强是提高图像质量的一种方法,常用的增强方法包括直方图均衡化、空间滤波和频域滤波等。

Matlab提供了histeq()函数用于直方图均衡化,imfilter()函数用于空间滤波,freqz()函数用于频域滤波,方便我们对图像进行增强处理。

4. 图像的分割图像分割是将图像划分为若干个互不重叠的区域的过程,可以用于目标识别、边缘检测等应用。

Matlab提供了一系列图像分割函数,例如graythresh()、im2bw()和bwlabel()等,方便我们进行图像的分割操作。

二、数字音频处理数字音频处理是对数字音频信号进行分析、重构和改变的过程。

Matlab提供了丰富的音频处理工具箱,方便我们进行音频的读取、播放、滤波、变调等各种操作。

1. 音频的读取和播放使用Matlab进行音频处理的第一步是将音频文件读取进来,并通过sound()函数将音频播放出来。

数字图像处理matlab代码

数字图像处理matlab代码

一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。

1、不同滤波器的频域降噪1.1 理想低通滤波器(ILPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4)); %将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if d<=d0 %点(i,j)在通带内的情况h=1; %通带变换函数else %点(i,j)在阻带内的情况h=0; %阻带变换函数ends(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('ILPF滤波后的图像(d=40)');运行结果:1.2 二阶巴特沃斯低通滤波器(BLPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1/(1+(d/d0)^(2*n)); %BLPF滤波函数s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('BLPF滤波后的图像(d=40)');实验结果:1.3 指数型低通滤波器(ELPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=exp(log(1/sqrt(2))*(d/d0)^2);s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('ELPF滤波后的图像(d=40)');运行结果:1.4 梯形低通滤波器(TLPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=10;d1=160;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if (d<=d0)h=1;else if (d0<=d1)h=(d-d1)/(d0-d1);else h=0;endends(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('TLPF滤波后的图像'); %为图像添加标题运行结果:1.5 高斯低通滤波器(GLPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('GLPF滤波后的图像(d=40)');运行结果:1.6 维纳滤波器[B,Cmap]=imread('eight.tif'); %读取MATLAB中的名为eight的图像I1=im2double(B);I2=imnoise(I1,'gaussian',0.01);I3=imnoise(I2,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I1) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I3) %加入混合躁声后显示图像title('加噪后的图像');I4=wiener2(I3);subplot(1,3,3);imshow(I4); %显示wiener滤波后的图像title('wiener滤波后的图像');运行结果:结论:理想低通滤波器,虽然有陡峭的截止频率,却不能产生良好的效果,图像由于高频分量的滤除而变得模糊,同时还产生振铃效应。

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

用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 图像的采样和量化根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类:➢亮度图像(Intensity images)➢二值图像(Binary images)➢索引图像(Indexed images)➢RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。

若图像是double类,则像素取值就是浮点数。

(完整版)数字图像处理MATLAB程序【完整版】

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。

三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。

(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理程序实验一1、图像的缩放:A=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); subplot(311);imshow(A);title('原图')B=imresize(A,3);subplot(312);imshow(B);title('三倍图');C=imresize(A,0.5);subplot(313);imshow(C);title('二分之一图');2、图像的镜像:A1=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); figuresubplot(2,2,1),imshow(uint8(A1));H=size(A1);title('原像')A2(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,1:H(2),1:H(3));%垂直镜像subplot(2,2,2),imshow(uint8(A2));title('垂直镜像')A3(1:H(1),1:H(2),1:H(3))=A1(1:H(1),H(2):-1:1,1:H(3));%水平镜像subplot(2,2,3),imshow(uint8(A3));title('水平镜像')A4(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,H(2):-1:1,1:H(3));%对角镜像subplot(2,2,4),imshow(uint8(A4));title('对角镜像')3、图像的旋转:I = imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); subplot(141);imshow(I);title('原图');theta1 = 45;%旋转的角度为45度K1 = imrotate(I,theta1); % 对图像进行旋转subplot(142);title('旋转45度后的图像');theta2 = 138;%旋转的角度为138度K2 = imrotate(I,theta2); % 对图像进行旋转subplot(143);imshow(K2);title('旋转138度后的图像');theta3 = 60;%旋转的角度为60度K3 = imrotate(I,theta3); % 对图像进行旋转subplot(144);imshow(K3);title('旋转60度后的图像');4、图像的剪切:A1=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');A2=imcrop(A1,[700 500 1900 1100]);figuresubplot(1,2,1),imshow(A1);title('原像')subplot(1,2,2),imshow(A2);title('剪切后像')5、图像的平移:A7=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(121);imshow(A7);title('原始图像');A=imcrop(A7,[700 500 1900 1100]);A1=double(A);A1_move=zeros(size(A1));H=size(A1);A1_x=500;A1_y=500;A1_movesult(A1_x+1:H(1),A1_y+1:H(2),1:H(3))=A(1:H(1)-A1_x,1:H(2)-A1_y,1:H(3)); subplot(122);imshow(uint8(A1_movesult));title('平移后的图像');6、图像的乘法:I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(221);imshow(I);title('原始图像');I2=immultiply(I1,I1);subplot(222);imshow(I2);title('图像自乘效果');I3=immultiply(I,5);subplot(223);imshow(I3);title('图像与常数相乘');7、图像的除法:clear all;I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); subplot(221);imshow(I);title('原始图像');background=imopen(I,strel('disk',15));I1=imdivide(I,background);subplot(222);imshow(I1);title('图像与背景相除');I2=imdivide(I,2);subplot(223);imshow(I2);title('图像与常数相除');8、图像的加法:clear all;I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); I1=imcrop(I,[700 500 1900 1100]);subplot(131);imshow(I1);title('原始图像剪切后的图像');K=imadd(I1,I1);subplot(132);imshow(K);title('剪切后图像自相加后的图');F=imadd(I,45);subplot(133);imshow(F);title('原始图像与常数相加后的图形');实验二1、图像的灰度与二值变换:A=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');B=rgb2gray(A);%彩色图像转换成灰度图像subplot(131);imshow(A);title('原图');subplot(132);imshow(B);title('原图灰度图像');BW=im2bw(B,0.2);%0.2是阈值用来控制灰度等级的,设置成不同的值能够使二值图的效果进行不同的变化subplot(133);imshow(BW);title('二值图像');2、图像的灰度线性变换:I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(141);imshow(I);title('原始图像');axis([500,3000,500,2400]);axis on; %显示坐标系I1=rgb2gray(I);subplot(142),imshow(I1);title('灰度图像');axis([500,3000,500,2400]);axis on; %显示坐标系J=imadjust(I1,[0.1 0.5],[0 1]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1]subplot(143),imshow(J);title('线性变换图像[0.1 0.5]');axis([500,3000,500,2400]);grid on; %显示网格线axis on; %显示坐标系K=imadjust(I1,[0.3 0.6],[0 1]); %局部拉伸,把[0.3 0.6]内的灰度拉伸为[0 1]subplot(144),imshow(K);title('线性变换图像[0.3 0.6]');axis([500,3000,500,2400]);grid on; %显示网格线axis on; %显示坐标系3、图像线性反转:I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');J=double(I);%将原图中的值返回成双精度J=-J+255; %图像反转线性变换H=uint8(J);%将J中的图像转换成用8位显示的无符号整数类型subplot(121);imshow(I);title('对原图取双精度后的图像');subplot(122);imshow(H);title('线性反转后的图像');4、图像的非线性变换:I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');I1=rgb2gray(I);subplot(121);imshow(I1);title(' 灰度图像');axis on; %显示坐标J=double(I1);J=40*(log(J+1));%对图像进行自然对数变换H=uint8(J);subplot(122); imshow(H);title(' 对数变换图像');axis on; %显示坐标系5、图像的直方图均衡化:I = imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');I1=rgb2gray(I);figuresubplot(141);imshow(I1)subplot(142);imhist(I1)title('均衡化之前的直方图');I2=histeq(I1);%使用直方图均衡化增强对比度subplot(143);imshow(I2)subplot(144);imhist(I2)title('均衡化之后的直方图');6、线性均值滤波I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(231)imshow(I)title('原始图像')I=rgb2gray(I);I1=imnoise(I,'salt & pepper',0.02);%为灰度图像增加盐椒噪声,其噪声的密度为0.02 subplot(232)imshow(I1)title(' 添加椒盐噪声的灰度图像')k1=filter2(fspecial('average',3),I1)/255; %进行3*3模板平滑滤波,这是默认的模板k2=filter2(fspecial('average',5),I1)/255;%进行5*5模板平滑滤波k3=filter2(fspecial('average',7),I1)/255;%进行7*7模板平滑滤波k4=filter2(fspecial('average',9),I1)/255; %进行9*9模板平滑滤波subplot(233);imshow(k1);title('3*3 模板平滑滤波');subplot(234);imshow(k2);title('5*5 模板平滑滤波');subplot(235);imshow(k3);title('7*7 模板平滑滤波');subplot(236);imshow(k4);title('9*9 模板平滑滤波');7、非线性中值滤波I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');I1=rgb2gray(I);J=imnoise(I1,'salt & pepper',0.02);subplot(231),imshow(I1);title('灰度图像');subplot(232),imshow(J);title('添加椒盐噪声的灰度图像');k1=medfilt2(J); %进行3*3模板中值滤波k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波k4=medfilt2(J,[9,9]); %进行9*9模板中值滤波subplot(233);imshow(k1);title('3*3模板中值滤波');subplot(234);imshow(k2);title('5*5模板中值滤波');subplot(235);imshow(k3);title('7*7模板中值滤波');subplot(236);imshow(k4);title('9*9 模板中值滤波');8、图像的锐化:I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(2,2,1);imshow(I);title('原始图像');axis([500,3000,500,3000]);axis on; %显示坐标系I1=im2bw(I,0.1);subplot(2,2,2),imshow(I1);title('二值图像');axis([500,3000,500,3000]);axis on;%显示坐标系H=fspecial('sobel'); %选择sobel算子J=filter2(H,I1); %卷积运算subplot(2,2,3),imshow(J);title('sobel算子锐化图像');axis on;%显示坐标系h=[0 1 0,1 -4 1,0 1 0]; %拉普拉斯算子h1=double(h);J1=double(I1);J2=conv2(J1,h1,'same'); %卷积运算,返回的是一个与J1具有相同尺寸的阵列subplot(2,2,4),imshow(J2);title('拉普拉斯算子锐化图像');axis on;%显示坐标系实验三1、梯度算子边缘检测I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); subplot(151);imshow(I)title('原始图像');axis([500,3000,500,3000]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I,0.1);subplot(152);imshow(I1);title('二值图像');axis([500,3000,500,3000]);grid on; %显示网格线axis on; %显示坐标系I2=edge(I1,'roberts');subplot(153);imshow(I2);title('roberts算子分割结果');axis([500,3000,500,2500]);grid on; %显示网格线axis on; %显示坐标系I3=edge(I1,'sobel');subplot(154);imshow(I3);title('sobel算子分割结果');axis([500,3000,500,2500]);grid on; %显示网格线axis on; %显示坐标系I4=edge(I1,'Prewitt');subplot(155);imshow(I4);title('Prewitt算子分割结果');axis([500,3000,500,2500]);grid on; %显示网格线axis on; %显示坐标系2、log算子边缘检测I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); subplot(2,2,1);imshow(I);title('原始图像');I1=rgb2gray(I);subplot(2,2,2);imshow(I1);title('灰度图像');I2=edge(I1,'log');subplot(2,2,3);imshow(I2);title('log算子边缘检测结果');3、canny算子边缘检测I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); subplot(131);imshow(I);title('原始图像')I1=rgb2gray(I);subplot(132);imshow(I1);title('灰度图像');I2=edge(I1,'canny');subplot(133);imshow(I2);title('canny算子边缘检测结果');4、hough变换I= imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); I1=rgb2gray(I);subplot(2,2,1);imshow(I1);title('灰度图像');axis([500,3000,500,2400]);grid on;axis on;BW=edge(I1,'prewitt');subplot(2,2,2);imshow(BW);title('prewitt算子边缘检测后图像');axis([500,3000,500,2400]);grid on;axis on;[H,T,R]=hough(BW);subplot(2,2,3);imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); title('霍夫变换图');xlabel('\theta'),ylabel('\rho');axis on , axis normal, hold on;P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));x=T(P(:,2));y=R(P(:,1));plot(x,y,'s','color','white');lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7); subplot(2,2,4);,imshow(I1);title('霍夫变换图像检测');axis([500,3000,500,2400]);grid on;axis on;hold on;max_len=0;for k=1:length(lines)xy=[lines(k).point1;lines(k).point2];plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');len=norm(lines(k).point1-lines(k).point2);if(len>max_len)max_len=len;xy_long=xy;endendplot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');5、直方图阈值I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');I1=rgb2gray(I);figure;subplot(221);imshow(I1);title(' 灰度图像')axis([500,3000,500,2500]);grid on; %显示网格线axis on; %显示坐标系[m,n]=size(I1); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255GP(k+1)=length(find(I1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endsubplot(222),bar(0:255,GP,'g')%绘制直方图title('灰度直方图')xlabel('灰度值')ylabel(' 出现概率')I2=im2bw(I,50/255);subplot(223),imshow(I2);title('阈值50的分割图像')axis([500,3000,500,2500]);grid on; %显示网格线axis on; %显示坐标系I3=im2bw(I,100/255); %subplot(224),imshow(I3);title('阈值100的分割图像')axis([500,3000,500,2500]);grid on; %显示网格线axis on; %显示坐标系7、ostu法阈值分割clcclear allI=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(1,2,1),imshow(I);title('原始图像')axis([500,3000,500,3000]);grid on; %显示网格线axis on; %显示坐标系level=graythresh(I);%确定灰度阈值BW=im2bw(I,level);subplot(1,2,2),imshow(BW);title('Otsu 法阈值分割图像')axis([500,3000,500,3000]);grid on; %显示网格线axis on; %显示坐标系实验四1、快速傅里叶变换与反变换I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');A=rgb2gray(I);%原图转换成灰度图像x1=fft2(A);%对灰度图像进行快速傅里叶变换x2=fftshift(x1);x3=ifft(x1)/10;%fft逆变换figuresubplot(2,2,1);imshow(A)title('原图');subplot(2,2,2);imshow(x1)title('频谱图');subplot(2,2,3);imshow(log(abs(x2)+1),[0 10]);title('直流分量移至频谱图中心');subplot(2,2,4)imshow(x3,[0 10])title('傅里叶反变换');2、DCT变换I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');I1=rgb2gray(I);I2=imcrop(I1,[700 500 1900 1100]);%由于原始图片比较大,在进行dct变换时出现了超出内在的情况,所以对图片进行了适当的剪切J=dct2(I2);%返回图像I2的二维离散余弦变换值,其大小与I2相同,且各元素为离散余弦变换的系数B(k1.k2)subplot(121);imshow(I);title('原始图像');subplot(122);imshow(log(abs(J)),[]);colormap(jet(64));%反映了当前图像中的色图情况colorbar%colorbar函数显示当前colormap在当前图以及调整当前轴,使其适应colorbartitle('DCT变换');3、骨架提取I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg');subplot(141),imshow(I);title('原始图像');axis([500,3000,500,2400]);axis on;I1=im2bw(I,0.1);subplot(142),imshow(I1);title('二值图像');axis([500,3000,500,2400]);axis on;I2=bwmorph(I1,'skel',1);%对二值图像进行形态学操作,其中skel是骨架提取的参数,而1是进行骨架提取的次数可以大到无穷subplot(143),imshow(I2);title('1次骨架提取');axis([500,3000,500,2400]);axis on;I3=bwmorph(I1,'skel',3);subplot(144),imshow(I3);title('3次骨架提取');axis([500,3000,500,2400]);axis on;4、边界提取I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); %载入图像subplot(1,3,1),imshow(I);title('原始图像');axis([500,3000,500,2400]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I,0.1);subplot(1,3,2),imshow(I1);title('二值化图像');axis([500,3000,500,2400]);axis on; %显示坐标系I2=bwperim(I1);%获取二值图像的区域的周长subplot(1,3,3),imshow(I2);title('边界周长的二值图像');axis([500,3000,500,2400]);grid on;axis on;5、开、闭运算I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); %载入图像subplot(3,2,1),imshow(I);title('原始图像');axis([500,3000,500,2400]);axis on; %显示坐标系I1=rgb2gray(I);subplot(3,2,2),imshow(I1);title('灰度图像');axis([500,3000,500,2400]);axis on; %显示坐标系se=strel('disk',5);%创建一个半径为5的圆形平面结构元素I2=imopen(I1,se); %开启操作I3=imclose(I1,se); %闭合操作subplot(3,2,3),imshow(I2);title('开启运算后图像');axis([500,3000,050,2400]);axis on;%显示坐标系subplot(3,2,4),imshow(I3);title('闭合运算后图像');axis([500,3000,500,2400]);axis on; %显示坐标系se=strel('octagon',18);%生成一个从中心点到边界跨度为18的八边形(括号中的参数必须是3的整数倍)I4=imopen(I1,se);I5=imclose(I4,se);subplot(3,2,5),imshow(I5); %开—闭运算图像title('开—闭运算图像');axis([500,3000,500,2400]);axis on; %显示坐标系I6=imclose(I1,se);I7=imopen(I6,se);subplot(3,2,6),imshow(I7); %闭—开运算图像title('闭—开运算图像');axis([500,3000,500,2400]);6、腐蚀、膨胀操作I=imread('F:\MATLAB程序\数字图像处理实验\kunkun.jpg'); %载入图像I1=rgb2gray(I);subplot(1,3,1);imshow(I1);title('灰度图像');axis([500,3000,500,2400]);grid on; %显示网格线axis on; %显示坐标系se=strel('disk',15); %生成半径为15的圆形结构元素I2=imerode(I1,se); %用生成的结构元素对图像进行腐蚀subplot(1,3,2);imshow(I2);title('腐蚀后图像');axis([500,3000,500,2400]);grid on; %显示网格线axis on;%显示坐标系se1=strel('square',6); %生成边长为6方形结构元素I3=imdilate(I1,se1); %用生成的结构元素对图像进行膨胀subplot(1,3,3);imshow(I3);title(' 膨胀后图像');axis([500,3000,500,2400]);grid on; %显示网格线axis on; %显示坐标系。

相关文档
最新文档