数字图像Matlab实验操作手册(2011)
- 格式:doc
- 大小:1.63 MB
- 文档页数:35
MATLAB图像处理实践指南1. 引言图像处理是数字图像处理领域的重要研究内容,它涵盖了图像获取、图像增强、图像分割、图像压缩等多个方面。
而MATLAB作为一个功能强大的数值计算软件,也提供了丰富的图像处理工具箱。
本文将介绍MATLAB中的图像处理实践指南。
2. 图像获取图像获取是图像处理的第一步,它涉及到从不同的源(摄像头、扫描仪等)获取图像,并将其加载到MATLAB中进行后续处理。
在MATLAB中,可以通过imread函数读取图像,并得到表示图像的矩阵。
此外,MATLAB还提供了一些常用的图像获取函数,如imcapture和imgetframe,可以用于从摄像头或视频文件中获取图像。
3. 图像显示与保存在进行图像处理之前,需要将图像显示出来,以便对图像进行观察和分析。
MATLAB提供了imshow函数,可以用于显示图像。
通过设置不同的参数,可以实现对图像的放大、缩小、旋转等操作。
此外,还可以使用imcontrast函数进行对比度调整,使图像更加清晰。
对于需要保存图像的情况,MATLAB提供了imwrite函数,可以将图像保存为不同的格式,如JPEG、PNG等。
4. 图像增强图像增强是指提高图像质量,使图像更加清晰和易于分析的过程。
常用的图像增强技术包括灰度拉伸、直方图均衡化、锐化等。
在MATLAB中,可以使用imadjust函数实现灰度拉伸,该函数可以根据图像的最小和最大像素值进行线性拉伸,从而增强图像的对比度。
对于直方图均衡化,可以使用histeq函数实现,该函数可以将图像的直方图均衡化,从而增强图像的细节和对比度。
锐化操作可以使用imsharpen函数实现,该函数可以增强图像的边缘和纹理。
5. 图像滤波图像滤波是指通过对图像进行平滑或者增强,以减少图像中的噪声或者突出图像中的某些特征。
常用的图像滤波方法有均值滤波、中值滤波、高斯滤波等。
在MATLAB中,可以使用imfilter函数实现常见的滤波操作。
实验一:使用MATLAB计算图像有关统计参数一.实验目的:1.了解图片的基本处理方法。
2.了解MATLAB图片处理函数的基本应用。
3.了解MATLAB图片处理的方法。
二.实验要求:1.获取图片的大小2.将图片重新设置为大小200×200的图片,并计算图片的灰度平均值,协方差矩阵,图片的灰度标准差,图片的相关系数3.将图片旋转90°,180°,270°,360°,计算它们与原图片的相关系数三.实验步骤:1.获取图像大小:(1)实验原理:使用imread()函数读入图像,并且通过size()函数获取图像大小。
(2)编程及运算结果:I=imread('football.jpg');subplot(2,2,1);imshow(I);J=rgb2gray(I);subplot(2,2,2);imshow(J);s=size(J)s =256 320(3)处理结果图像截图:获取图像灰度化图像2. 将图像重新设置大小为200×200,并输出图像(1)实验原理:调用imresize函数重新设置图像大小。
(2)编程如下:I=imread('football.jpg');subplot(2,2,1);imshow(I);J=rgb2gray(I);subplot(2,2,2);imshow(J);B=imresize(J,[200,200],'nearest');subplot(2,2,3);imshow(B);(3)处理或图像截图:3. 计算图像的灰度平均值,协方差矩阵,图像的灰度标准差,图像的相关系数(1)实验原理:分别调用meam2()函数、cov()函数、corr2()函数以及std2()函数计算灰度平均值,协方差等。
比较两幅图的相关性,因而读取另外一副图,做相同处理后使用corr2()函数。
(2)编程如下:ave=mean2(J);ave =74.4516Cov(double(J))Cov=Sd=std2(double(J))Sd =37.1236P=imread('greens.jpg'); %读取另外一副图,灰度处理、重设大小。
温州大学物理与电子信息工程学院数字图像处理实验报告课程名称:数字图像处理班级:电信二班姓名:施蒙皎学号:0911*******实验地点:5B311 日期:2011.10.13实验一基于Matlab环境的数字图像的基本操作[实验目的和要求]1、熟悉Matlab处理数字图像的操作环境2、掌握Matlab对数字数字图像的基本操作3、掌握图像类型的相互转换[实验内容]1根据像素间的基本关系,实现对像素间的连通关系。
试求图1的8连通及4连通,并讨论其区别(提示:bwlabel)。
1 0 0 1 01 1 1 0 00 1 1 1 00 0 0 1 1图 1.1 像素图2试对lena图像分别进行4和16倍减采样,查看其减采样效果(提示:quartimg = zeros(wid/2+1,hei/2+1)。
3试将图lena图像,转换成128级灰度图像,64级灰度图像,32级灰度图像,8级灰度图像和2级灰度图像。
(提示:for i = 1:widfor j = 1:heiimg64(i,j) = floor(b(i,j)/4);endend)4 实现图像类型的相互转换(RGB、索引转换成灰度和二值图像)。
实验结果及分析:1.2.a=imread('C:\Documents and Settings\Administrator\桌面\lena.JPG'); b=rgb2gray(a);[wid,hei]=size(b);%4倍减采样quartimg=zeros(wid/2+1,hei/2+1);i1=1;j1=1;for i=1:2:10for j=1:2:heiquartimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;endfigureimshow(uint8(quartimg))%16倍减采样quartimg=zeros(wid/4+1,hei/4+1);i1=1;j1=1;for i=1:4:widfor j=1:4:heiquartimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;endfigureimshow(uint8(quartimg))3.a=imread('C:\Documents and Settings\Administrator\桌面\lena.jpg');b=rgb2gray(a);figureimshow(b)[wid,hei]=size(b);img128=zeros(wid,hei);img64=zeros(wid,hei);img32=zeros(wid,hei);img8=zeros(wid,hei);img2=zeros(wid,hei);for i=1:widfor j=1:heiimg64(i,j)=floor(b(i,j)/2);endendfigureimshow(uint8(img128),[0,127]) for i=1:widfor j=1:heiimg64(i,j)=floor(b(i,j)/4);endendfigureimshow(uint8(img64),[0,63]) for i=1:widfor j=1:heiimg32(i,j)=floor(b(i,j)/8);endendfigureimshow(uint8(img32),[0,31]) for i=1:widfor j=1:heiimg8(i,j)=floor(b(i,j)/32);endendfigureimshow(uint8(img8),[0,7])for i=1:widfor j=1:heiimg2(i,j)=floor(b(i,j)/128);endendfigureimshow(uint8(img2),[0,2])4.a=imread('C:\Documents and Settings\Administrator\桌面\lena.jpg'); b=rgb2gray(a);figureimshow(b)d=im2bw(a);figureimshow(d)评定成绩:。
实验一Matlab语言及数字图像处理基本操作一、实验目的1、学习MATLAB语言的基本用法;2、掌握MATLAB语言中图像数据与信息的读取方法;3、掌握在MATLAB中绘制灰度直方图的方法;4、掌握灰度直方图的均衡化的方法;5、利用基本灰度变换对图像进行增强二.实验环境及开发工具Windws XP、MATALAB7.0三.实验原理及方法1、验证MATLAB中图像数据的读写及显示(1)imreadimread函数用于读入各种图像文件,其一般的用法为[X,MAP]=imread(‘filename’,‘fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename 为读取的图像文件(可以加上文件的路径)。
(2)imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map 写入文件filename。
(3)imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为imfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。
(4)MATLAB中图像文件的显示imshowimshow函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。
需要显示多幅图像时,可以使用figure语句,它的功能就是重新打开一个图像显示窗口。
2、验证图像对比度增强函数Imadjust如果原图像f(x,y)的灰度范围是[m,M],我们希望调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换,,就可以实现这一要求。
第一部分数字图像处理实验一图像的点运算实验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命令窗口中输入相应程序。
实验一 Matlab及其图像处理工具箱的使用一、实验目的与要求1.熟悉常用图像的格式和类型。
2.熟练掌握在MATLAB中如何读取和保存图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何进行图像间转化。
5.掌握如何实时获取USB2.0摄像头采集的视频图像。
二、实验内容及步骤1.利用imread函数读取一幅图像,设名为cameraman.tif,存入一个数组中;I=imread(‘cameraman.tif’); % 读入原图像,tif格式2.利用whos 命令提取该读入图像cameraman.tif的基本信息;whos I;%显示图像I的基本信息3.利用imshow()函数来显示这幅图像;imshow(I) %显示图像前三步综合程序:>> I=imread('cameraman.tif');>> whos IName Size Bytes Class AttributesI 256x256 65536 uint8>> imshow(I)步骤三图像:4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;程序:>> imfinfo cameraman.tifans =Filename:'D:\Program Files\MA TLAB\R2009a\toolbox\images\imdemos\cameraman.tif'FileModDate: '04-十二月-2000 13:57:54'FileSize: 65240Format: 'tif'FormatV ersion: []Width: 256Height: 256BitDepth: 8ColorType: 'grayscale'FormatSignature: [77 77 42 0]ByteOrder: 'little-endian'NewSubFileType: 0BitsPerSample: 8Compression: 'PackBits'PhotometricInterpretation: 'BlackIsZero'StripOffsets: [8x1 double]SamplesPerPixel: 1RowsPerStrip: 32StripByteCounts: [8x1 double]XResolution: 72YResolution: 72ResolutionUnit: 'None'Colormap: []PlanarConfiguration: 'Chunky'TileWidth: []TileLength: []TileOffsets: []TileByteCounts: []Orientation: 1FillOrder: 1GrayResponseUnit: 0.0100MaxSampleV alue: 255MinSampleV alue: 0Thresholding: 1Offset: 64872ImageDescription: [1x112 char]5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
河南工业大学《数字图像处理》课程实验指导书信息科学与工程学院2011年3月实验一 Matlab图像显示方法一、实验目的1.了解Matlab的基本功能及操作方法2.练习图像读写和显示函数的使用方法3.掌握Matlab支持的五类图像的显示方法二、实验内容1.图像的读写%matlab自带图像在安装路径下\toolbox\images\imdemosA图像读RGB = imread('ngc6543a.jpg';B图像写先从一个.mat 文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp 文件,并将图像存入其中。
load clownwhosimwrite(X,map,'clown.bmp'C图像文件格式转换bitmap = imread('clown.bmp','bmp';imwrite(bitmap,'clown.png','png';2.图像显示A二进制图像的显示BW1=zeros(20,20; %创建仅包含0/1的双精度图像BW1(2:2:18,2:2:18=1;imshow(BW1,'notruesize'; %double类型[0,1]whosBW2=uint8(BW1;figure,imshow(BW2,'notruesize'figure,imshow(BW2,[],'notruesize' %uint8类型[0,255] BW3=BW2~=0; %逻辑标志置为onfigure,imshow(BW3,'notruesize'whosB灰度图像的显示I=imread('spine.tif';J=filter2([1 2;-1 -2],I;imshow(I,[]figure,imshow(J,[]C索引图像的显示load clown %装载一幅图像imwrite(X,map,'clown.bmp'; %保存为bmp文件imshow(Ximshow(X,mapDRGB图像的显示I=imread('trees.tif';imshow(IRGB=imread('ngc6543a.jpg';figure,imshow(RGBimshow(RGB(:,:,3 % 显示第3个颜色分量E多帧图像的显示mri=uint8(zeros(128,128,1,27; % 27帧文件mri.tif初始化for frame=1:27[mri(:,:,:,frame,map]=imread('mri.tif',frame; % 读入每一帧endfigure;imshow(mri(:,:,:,3,map; % 显示第3帧figure,imshow(mri(:,:,:,6,map; % 显示第6帧figure,imshow(mri(:,:,:,10,map; % 显示第10帧figure,imshow(mri(:,:,:,20,map; % 显示第20帧figure;hold on;for frame=1:27hold on;imshow(mri(:,:,:,frame,map; % 读入每一帧pause(0.1endF显示多幅图像[X1,map1]=imread('forest.tif';[X2,map2]=imread('trees.tif';figure;subplot(1,2,1,imshow(X1,map1subplot(1,2,2,imshow(X2,map2figure;subplot(1,2,1,subimage(X1,map1subplot(1,2,2,subimage(X2,map2三、思考题:1.图像显示时,若不带参数’notruesize’,显示效果如何?2.如何显示RGB图像的某一个颜色分量?3.如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?%pause(n 实验二图像变换一、实验目的1.了解傅立叶变换及离散余弦变换在图像处理中的应用二、实验内容1.傅立叶变换A绘制一个二值图像矩阵,并将其傅立叶函数可视化。
《数字图像处理及MATLAB实现》图像增强与平滑实验一.实验目的及要求1、熟悉并掌握MA TLAB 图像处理工具箱的使用;2、理解并掌握常用的图像的增强技术。
二、实验设备MATLAB 6.5 以上版本、WIN XP 或WIN2000 计算机三、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
(可将每段程序保存为一个.m文件)1.直方图均衡化clear all; close all % Clear the MATLAB workspace of any variables% and close open figure windows.I = imread('pout.tif'); % Reads the sample images ‘pout.tif’, and stores it inimshow(I) % an array named I.display the imagetext(60,20,'李荣桉1909290239','horiz','center','color','r')figure, imhist(I) % Create a histogram of the image and display it in% a new figure window.[I2,T] = histeq(I); % Histogram equalization.figure, imshow(I2) % Display the new equalized image, I2, in a new figure window.text(60,20,'李荣桉1909290239','horiz','center','color','r')figure, imhist(I2) % Create a histogram of the equalized image I2.figure,plot((0:255)/255,T); % plot the transformation curve.imwrite (I2, 'pout2.png'); % Write the newly adjusted image I2 to a disk file named% ‘pout2.png’.imfinfo('pout2.png') % Check the contents of the newly written file2.直接灰度变换clear all; close allI = imread('cameraman.tif'); 注意:imadjust()功能:调整图像灰度值或颜色映像表,也可实现伽马校正。
附录五实验报告格式报告人:专业年级:学号:实验日期:报告完成日期:一、实验名称××××××二、实验目的:××××××三、实验内容:(结合实验指导书和课本,列出自己在本次实验中练习或验证了什么)四、回答问题:(回答实验指导书中提出的问题)五、遇到的问题及解决:(列出实验和求解思考题的过程中遇到的问题及解决方法)六、体会:(小结出从本次实验中学会了什么,难点是什么,有什么想法和体会)74持2维标注矩阵。
'Image' 二值图像,与某区域具有相同大小的逻辑矩阵。
可以用这个属性直接将每个子区域提取出来,然后再作相应的处理'FilledImage' 与上相同,唯一区别是这是个做了填充的逻辑矩阵。
只有区域有空洞时'Image'和'FilledImage'才有明显差别'Solidity' 是标量,同时在区域和其最小凸多边形中的像素比例。
计算公式为:Area/ConvexArea,这也是个仿射特征,实际上反映出区域的固靠性程度。
此属性只支持2维标注矩阵。
'MajorAxisLength'是标量,与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义下)。
'MinorAxisLength'是标量,与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下)。
本属性只支持二维标注矩阵。
'PixelList' p行ndims(L)列矩阵,存储上述索引对应的像素坐标。
'PixelIdxList' p元向量,存储区域像素的索引下标。
'Extent' 是标量,同时在区域和其最小边界矩形中的像素比例。
计算公式为:Area除以边界矩形面积,这也是个仿射特征,实际上反映出区域的扩展范围程度。
数字图像Matlab实验2011年4月目录1. Matlab 7.6简单入门 (1)1.1启动 (1)1.2 Matlab的使用方式 (1)1.3交互方式的使用 (1)1.4 Matlab的程序工作方式 (1)1.5基本命令 (2)1.6基本函数 (2)1.7 数据类型及运算 (2)1.8 Matlab程序控制流 (3)实验1 Matlab基本运算 (5)实验2 认识数字图像 (5)实验3 图像增强 (10)实验4 彩色图象处理 (14)实验5 图像变换 (17)实验6 频域图像增强 (21)习题6.1 理想低通(高通)滤波器 (21)习题6.2 Butterworth滤波器 (22)实验7 图像编码 (23)实验8 图像分析 (23)习题8.1 印刷体字符识别 (23)习题8.2 手写体字符识别 (33)说明本实验手册仅供以Matlab为实验平台学习《数字图像处理》课程时使用,本材料基本上自成体系,内容封闭,是《数字图像处理》课程的辅助资料。
《数字图像处理》课程所要求的实验作业,由任课老师另行布置。
1. Matlab 7.6简单入门Matlab是Mathworks公司推出的科技应用软件.1.1启动点击Matlab/bin/matlab.exe, 打开Matlab的工作窗(或指令窗)1.2 Matlab的使用方式①指令行操作之直接交互工作方式;②使用matlab编程语言之程序设计方式.1.3交互方式的使用在Matlab工作窗(如图1所示,Command Window)中一般输入以下三种指令行:①命令②表达式③赋值语句:变量=表达式图1 Matlab工作窗1.4 Matlab的程序工作方式step 1. File→New→M-file %打开Matlab程序工作窗Editor/Debugger step 2.编写Matlab程序;Tools→Run1.5基本命令quit %退出Matlabclc %清除指令窗口clear %从内存中清除变量和函数clf %清除当前图pack %合并工作内存中的碎块dir %列出文件cd %改变或显示当前工作目录disp %显示矩阵和文字内容size %确定矩阵的维数demo %演示程序help %在线帮助delete %删除文件whos %列出工作内存中的变量细节xpimage %图像处理性能的演示imagedemo %同上1.6基本函数figure %创建图形窗口image %创建图形窗口imshow %显示图像colormap %设置配色图rgb2hsv %将rgb图像转换成hsv图像hsv2rgb %将hsv图像转换成rgb图像rgb2ycbcr %将rgb图像转换成ycbcr图像ycbcr2rgb %将ycbcr图像转换成rgb图像abs %幅值fft2 %二维快速Fourier变换ifft2 %二维快速Fourier反变换log %自然对数dct2 %二维快速余弦变换idct2 %二维快速余弦反变换image %与imshow相似imfinfo %显示图像参数1.7 数据类型及运算1)Matlab的基本数据类型为矩阵(实数皆看成1×1的矩阵),矩阵的基本运算同线性代数A+B %矩阵相加A-B%矩阵相减A*B %矩阵相乘A.*B %矩阵对应元素相乘2)标量与矩阵进行运算的规定S+B=sE+Bs-B=sE-BB-s=B-sEs*B=sE*B3)其他运算inv(B)=B-1A^n=A n, A.^n=(a ij^n)exp(A)=(exp(a ij))log(A)=(log(a ij))f(A)=(f(a ij))A’=A/4)矩阵的输入直接输入A=[1 2 3;4 5 6;7 8 9]矩阵编辑器edit A5)指令行结果的输出(有如下三个要点)指令行后有分号, 不输出结果指令行后无分号, 输出运算结果表达式后按回车, 则ans=之后, 给出结果6)冒号运算符设A是m*n矩阵B=A(:,r) %由第r列元素组成的矩阵B=A(s,:) %由第s行元素组成的矩阵B=A(s1:s2,r1:r2) %取A的子矩阵B=A([1 3 5],:) %由A的1,3,5行组成的矩阵7)给矩阵作标志L=X<=0.5; %标志矩阵X中其值小于0.5的元素的位置(小于0.5的元素替换为1, 其余为零,作成一个新矩阵)8)Laplacian算子del2( )%五点离散拉普拉斯算子1.8 Matlab程序控制流1)注释%号为串首元素的一行字符串2)循环结构实验1 Matlab基本运算习题1.1 四则运算.习题1.2 矩阵运算.实验2 认识数字图像imfinfo('test.jpg') %显示图像文件1.jpg的属性习题2.1 读一幅图像(灰度值图像或彩色图像), 研究其图像参数.A=imread ('test.jpg'); %读图像1.jpg,并将像素值阵列赋给矩阵Aimshow(A); %显示图像AA ↙%显示图像A的像素值(若图像过大,显示时间就会过长,按ctrl+C终止)whos↙%显示内存中各变量的类型,包括A显示图像A的一个局部:B=A(1:100,1:100,:);C= A(101:200, 101:200,:);imshow(B);imshow(C);subplot(1,3,1),imshow(A);subplot(1,3,2),imshow(B);subplot(1,3,3),imshow(C);习题2.2 读一幅彩色图像,以灰度值图像的形式显示其RGB各分量,并比较之.B=imread('test.jpg'); %读彩色图像test.jpg,并将像素值阵列赋给矩阵Bimshow(B); %显示图像BB ↙%显示图像B的像素值whosBR=B(:,:,1); %B的红色分量BG=B(:,:,2); %B的绿色分量BB=B(:,:,3); %B的蓝色分量imshow(BR);imshow(BG);imshow(BB);whos%将三幅图像放在一起进行比较:subplot(1,3,1),imshow(BR);subplot(1,3,2),imshow(BG);subplot(1,3,3),imshow(BB);习题2.4读一幅彩色图像,以彩色图像的形式显示其RGB各分量,并比较其异同.BRR=B;BRR(:,:,2)=0; %去掉B的绿色分量BRR(:,:,3)=0; %去掉B的蓝色分量imshow(BRR);BGG=B;BGG(:,:,1)=0;BGG(:,:,3)=0; %去掉B的红、蓝色分量imshow(BGG);BBB=B;BBB(:,:,1)=0;BBB(:,:,2)=0; %去掉B的红、绿色分量imshow(BBB);%将三幅图像放在一起进行比较:subplot(1,3,1),imshow(BRR);subplot(1,3,2),imshow(BGG);subplot(1,3,3),imshow(BBB);习题2.5读一幅彩色图像,进行颜色模式转换,以灰度值图像的形式显示其HSI各分量,并比较其异同.C=rgb2hsv(B); %将彩色图像进行模式转换H=C(:,:,1);S=C(:,:,2);I=C(:,:,3);imshow(H); %显示B的色度分量imshow(S); %显示B的饱和度分量imshow(I); %显示B的亮度分量习题2.6 研究imwrite,将一个矩阵里的数据写进一个jpg图像文件里.习题2.7 傅立叶变换与滤波total_time_t=10; %总时间dalta_t=0.01; %采样间隔frequency=1/ dalta_t;dalta_u=frequency /N;N= total_time_t / dalta_t; %采样点数t=0: dalta_t: total_time_t;y=sin(2*pi*t)+sin(4*2*pi*t)+sin(8*2*pi*t); subplot(4,1,1);plot(t,y);%显示10秒原始信号ffty=fft(y); %y 的傅立叶变换u=N/2+1; %取y 的傅立叶变换数据用于显示 half_ffty= ffty (1:u);i=0: frequency /N: frequency /2; % frequency/N 为频率域空间采样频率 subplot(4,1,2);plot(i,abs(half_ffty));%显示信号的傅立叶变换h=5;w=4;%清除频率为4的信号,清除宽度为hffty (N-w/dalta_u-h:N-w/dalta_u+h)=0; ffty (w/dalta_u-h:w/dalta_u+h)=0; w=8; %清除频率为8的信号,清除宽度为hffty (N-w/dalta_u-h:N-w/dalta_u+h)=0; ffty (w/dalta_u-h:w/dalta_u+h)=0; half_ffty = ffty (1:u);subplot(4,1,3);plot(i,abs(half_ffty));%显示滤波以后的信号的频谱z=ifft(ffty);subplot(4,1,4);plot(t,real(z)); %显示滤波以后的信号12345678910-50505101520253035404550050010000510152025303540455005001000012345678910-202习题2.8 对图象进行压扩变换 %clear all; I=imread('A.jpg');imshow(I);pause;tt=255;maxmax=log(1+tt*tt)/log(1+tt);y=(255/maxmax)*log(1+double(I)*tt)/log(1+tt);yy=uint8(y);imshow(yy);习题2.9 第二章讲义第33页,对图象进行像素复制整数倍放大. clear all;I=imread('AA.jpg');II=size(I);t=2;X=II(1)*t;Y=II(2)*t;B=zeros(X,Y);for i=1:X/tfor j=1:Y/tB(i*t-1,j*t-1)=I(i,j);B(i*t-1,j*t)=I(i,j);B(i*t,j*t-1)=I(i,j);B(i*t,j*t)=I(i,j);endendimwrite(uint8(B),'b.bmp','bmp');习题2.10 对图像进行任意角度旋转clear all;I=imread('AA.jpg');II=size(I)theta=1.2;X=fix(sqrt(II(1)*II(1)+II(2)*II(2))+1);Y=X;B=zeros(X,Y,3);% x-x0=cos(theta)*(i-i0)-sin(theta)*(j-j0)% y-y0=sin(theta)*(i-i0)+cos(theta)*(j-j0)x0=fix(II(1)/2);y0=fix(II(2)/2);i0=fix(X/2);j0=fix(Y/2);for i=1:Xfor j=1:Yx=fix(x0+cos(theta)*(i-i0)-sin(theta)*(j-j0));y=fix(y0+sin(theta)*(i-i0)+cos(theta)*(j-j0));if x>1 && x<II(1) && y>1 && y<II(2)B(i,j,1)=I(x,y,1);B(i,j,2)=I(x,y,2);B(i,j,3)=I(x,y,3);endendendimshow(uint8(B));imwrite(uint8(B),'b.bmp','bmp');习题2.11 图像渐变clear allX1=imread('x1.jpg');X2=imread('x2.jpg');XX1=size(X1);XX2=size(X2);Y=X1;I=min(XX1(1),XX2(1));J=min(XX2(2),XX2(2));for i=1:9for xxx=1:Ifor yyy=1:JY(xxx,yyy,:)=i/10*X1(xxx,yyy,:)+(1-i/10)*X2(xxx,yyy,:);endendZ=uint8(Y);subplot(3,3,i),imshow(Z);end习题2.12 对bmp图象文件进行操作实验3 图像增强直接灰度变换习题3.1 图象反转习题3.2对数变换习题3.3幂次变换AA=imread('A.jpg');CC=double(AA(:,:,1))+double(AA(:,:,2))+double(AA(:,:,3)); BB=CC;WH=size(CC);W=WH(1);H=WH(2);for i=1:Wfor j=1:HBB(i,j)=CC(i,j)+255*(1/(CC(i,j)+1))*CC(i,j);%BB(i,j)=255-CC(i,j);%BB(i,j)=255/log(155)*log(1+CC(i,j));endendcolormap(gray);subplot(1,2,1),imagesc(AA);subplot(1,2,2),imagesc(BB);习题3.4 位面图切割colormap(gray);bb=imread('head.jpg');for k=1:8cc=rem(double(bb),2^k);ee=fix(cc/2^(k-1));ff=ee*250;subplot(2,4,k),imagesc(ff);title(k-1);end;50100150200250300150100150200250300250100150200250300350100150200250300450100150200250300550100150200250300650100150200250300750100150200250300●数据隐藏b=imread('a.bmp');%c=b(:,:,1);bb=imread('b.bmp');%请用图画做一个水印图象b.bmp与a.bmp规格要相同cc=rem(double(bb),2);for k=1:8d=double(c)+2^(k-1)*double(cc);%subplot(2,4,k),imshow(uint8(d));subplot(2,4,k),imagesc(d);%subplot(2,4,k),image(d);title(k-1);end;●图像的灰度直方图a=imread('a.jpg');b=a(:,:,1);imshow(b);figure, imhist(b,64); %作b的灰度直方图,64 可改为128, 256等●直方图均衡化a=imread('a.jpg');b=a(:,:,1);imshow(b);c=histeq(b); %对b进行直方图均衡化imshow(c) ;figure, imhist(b,64); %作b的灰度直方图,64 可改为128, 256等●领域平均法平滑滤波a=imread('a.jpg');b=a(:,:,1);c=[0.1 0.1 0.10.1 0.2 0.10.1 0.1 0.1];d=conv2(b,c);imagesc(d);●中值滤波a=imread('a.jpg');b=a(:,:,1);d=medfilt2(b,[ m n]); %[m,n]为滤波模板的规格imagesc(d);●拉普拉斯锐化a=imread('1.jpg');b=a(:,:,1);c=[0 1 01 -4 10 1 0 ]d=conv2(b,c);imagesc(d);习题3.5 中值滤波a=imread('fig6.jpg');imshow(a);pause;d=medfilt2(a,[3 5]);imshow(d);与图象滤波相关的几个Matlab函数(1)imnoise参见imnoise_test.mI = imread('Fig45.jpg');J = imnoise(I,'salt & pepper',0.02);subplot(1,2,1), imshow(I);subplot(1,2,2),imshow(J);(2)fspecial(3)filter2参见filter2_test.mI = imread('cameraman.tif');subplot(2,2,1);imshow(I); title('Original Image');H = fspecial('motion',20,45);MotionBlur = imfilter(I,H,'replicate');subplot(2,2,2);imshow(MotionBlur);title('Motion Blurred Image');H = fspecial('disk',10);blurred = imfilter(I,H,'replicate');subplot(2,2,3);imshow(blurred); title('Blurred Image');H = fspecial('unsharp');sharpened = imfilter(I,H,'replicate');subplot(2,2,4);imshow(sharpened); title('Sharpened Image');(4)medfilter2(5)fftshift参见fftshift_test.m实验4 彩色图象处理习题4.1 直方图的一个应用(真假币鉴别,仅供教学实验参考) a=imread('rmb.jpg');subplot(2,2,1);imagesc(a);xlabel(‘真币');b=rgb2hsv(a);b1=b(:,:,1);subplot(2,2,2);imhist(b1,64);xlabel(‘色调');b2=b(:,:,2);subplot(2,2,3);imhist(b2,64);xlabel(‘饱和度');b3=b(:,:,3);subplot(2,2,4);imhist(b3,64); xlabel(‘亮度');假币501001502002500色调0饱和度0亮度习题4.2 运用调色板设计技术将灰度图像彩色化。