第一篇:大连理工大学数字图像处理 实验报告4
大连理工大学实验报告
学院(系):
电信学部
专业:
电子信息工程
班级:
电子1102
姓
名:
陈柯锦
学号:
201181442
组:
___
实验时间:
实验室:
实验台:
实验名称 基于边缘直方图的图像检索
一、实验目的和要求
掌握用matlab进行图像检索的方法。
二、实验原理和内容
通常情况下,人类可以在只用图像的轮廓而不借助图像的颜色以及纹理信息的情况下就可以对一幅图像中的物体进行分类和识别。因而,研究图像轮廓信息的表达方式是十分必要的。
1.EHD描述子
边缘直方图(EHD)描述子是MPEG-7标准中提出的一种边缘描述子,它具有描述图像亮度变化的方向和频率的能力。其具体算法原理如下。
(1)对图像分块
当给定一张图像时,不重叠地将其分成4*4的子图,且每一子图继续分成若干不重叠的方形子块。在这一过程中,不论图像的大小,均将每一子图划分成数量一定的子块。这样做的目的是去除图像的大小(即分辨率)对特征的影响。通常情况下,每一子图中子块的数量是2的倍数,因而在某些情况下可能要舍弃边缘的像素点以满足条件。(2)判断每一子块是否包含边缘
当给定图像子块之后,若要判断该子块中是否包含边缘特征,一种简单的办法是对图像在空域利用滤波器进行滤波。在EHD特征中,统计以下五种形式的边缘特征:垂直(0°)、水平(90°)、45毒角、135°角以及非方向性边缘。如图1所示。
(3)统计边缘信息
通过以上步骤,可以判断出图像子块中是否包含边缘信息,下面要对这些边缘信息做以统计。在前面提到了在EHD描述子中将图像划分成4×4的16个子图,在这里对每一子图统计5个方向上各自包含的子块的个数,从而构成一个5维的向量。接着,对该向量进行归一化,即对向量的每一维均除以该子图中子块的数量。从而,一张图像便可以由一个80维的向量表示。到这里,EHD特征的基本生成过程已经完毕。
三、主要仪器设备
装有MATLAB的电脑。
四、实验步骤
完成基于EHD的图像检索。
五、实验数据记录和处理
程序:
clc,clear all fv=[1-1 1-1];fh=[1 1-1-1];fd45=[sqrt(2)0 0-sqrt(2)];fd135=[0 sqrt(2)-sqrt(2)0];fnd=[2-2-2 2];fv_th=30;fh_th=30;fd45_th=30;fd135_th=30;fnd_th=30;% cd('d:MATLAB7workpictures');% apath=dir;% name=apath(3,1).name;%以下对目标图片进行特征分析 mypic=imread('55.jpg');mypic=double(rgb2gray(mypic));[a,b]=size(mypic);;a=floor(a/4);b=floor(b/4);for i=0:3
for j=0:3
mypic_part=mypic(i*a+1:i*a+a,j*b+1:j*b+b);
m1=sum(sum(mypic_part(1:floor(a/2),1:floor(b/2))))/(a*b/4);
m2=sum(sum(mypic_part(1:floor(a/2),floor(b/2)+1:b)))/(a*b/4);
m3=sum(sum(mypic_part(floor(a/2)+1:a,1:floor(b/2))))/(a*b/4);
m4=sum(sum(mypic_part(floor(a/2)+1:a,floor(b/2)+1:b)))/(a*b/4);
mypic_mat(4*i+j+1,1)=([m1 m2 m3 m4]*fv')>fv_th;
mypic_mat(4*i+j+1,2)=([m1 m2 m3 m4]*fh')>fh_th;
mypic_mat(4*i+j+1,3)=([m1 m2 m3 m4]*fd45')>fd45_th;
mypic_mat(4*i+j+1,4)=([m1 m2 m3 m4]*fd135')>fd135_th;
mypic_mat(4*i+j+1,5)=([m1 m2 m3 m4]*fnd')>fnd_th;
end end mypic_mat=double(mypic_mat);%以上对目标图片特征提取完毕 %以下对库中图片分别进行计算 cd('d:MATLAB7workpictures');apath=dir;for k=3:62
name=apath(k,1).name;
pic=imread(name);
pic=double(rgb2gray(pic));
[a,b]=size(pic);;
a=floor(a/4);
b=floor(b/4);
for i=0:3
for j=0:3
pic_part=pic(i*a+1:i*a+a,j*b+1:j*b+b);
m1=sum(sum(pic_part(1:floor(a/2),1:floor(b/2))))/(a*b/4);
m2=sum(sum(pic_part(1:floor(a/2),floor(b/2)+1:b)))/(a*b/4);
m3=sum(sum(pic_part(floor(a/2)+1:a,1:floor(b/2))))/(a*b/4);
m4=sum(sum(pic_part(floor(a/2)+1:a,floor(b/2)+1:b)))/(a*b/4);
pic_mat(4*i+j+1,1)=([m1 m2 m3 m4]*fv')>fv_th;
pic_mat(4*i+j+1,2)=([m1 m2 m3 m4]*fh')>fh_th;
pic_mat(4*i+j+1,3)=([m1 m2 m3 m4]*fd45')>fd45_th;
pic_mat(4*i+j+1,4)=([m1 m2 m3 m4]*fd135')>fd135_th;
pic_mat(4*i+j+1,5)=([m1 m2 m3 m4]*fnd')>fnd_th;
end
end
pic_mat=double(pic_mat);
result(k-2)=sqrt(sum(sum((mypic_mat-pic_mat).^2)));end %以上对库中所有图片特征提取结束 min1=find(result==min(result))+2;if(length(min1)>1)min1=min1(1);end result(min1-2)=100000;min2=find(result==min(result))+2;if(length(min2)>1)min2=min2(1);end result(min2-2)=100000;min3=find(result==min(result))+2;if(length(min3)>1)min3=min3(1);end subplot(2,2,1)imshow(uint8(mypic))title('待检索图像')cd('d:MATLAB7workpictures');apath=dir;subplot(2,2,2)imshow(imread(apath(min1,1).name))title('最相近图像')subplot(2,2,3)imshow(imread(apath(min2,1).name))title('第二相近的图像')subplot(2,2,4)imshow(imread(apath(min3,1).name))title('第三相近的图像')
六、实验结果
模板图像最相近图像
第二匹配图像第三匹配图像
第二篇:昆明理工大学(数字图像处理)实验报告
昆明理工大学(数字图像处理)实验报告
实验名称
图像的基本变换 实验时间 2014 年 3 月 20 日 专业班级
学 号 姓 名
成 绩 教师评语:
一、实验目的与要求
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分量和振幅都是有限且离散的量时,称该图像为数字图像。
术语‘空间域’指的是图像平面本身,在空间与内处理图像的方法是直接对图像的像素进行处理。空间域处理方法分为两种:灰度级变换、空间滤波。空间域技术直接对像素进行操作其表达式为
g(x,y)=T[f(x,y)] 其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定领域内。
定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域。此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的领域。T应用于每个位置(x,y),以便在该位置得到输出图像g。在计算(x,y)处的g值时,只使用该领域的像素。
灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个亮度或灰度级变化函数。当处理单设(灰度)图像时,这两个术语可以互换。由于亮度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:
s=T(r)其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。
1.图像的线性变换g(x,y)=2*I(x,y)
I=imread('D:picture1.jpg');imshow(I);[m,n]=size(I);for x=1:m;for y=1:n;
g(x,y)=2*I(x,y);end end
imshow(g);
图像的线性变换:g(x,y)=I(x,y)
I=imread('D:picture1.jpg');imshow(I);[m,n]=size(I);for x=1:m;for y=1:n;
g(x,y)=I(x,y);end end imshow(g);
3.图像的非线性变换k1=40*log(k+1);
I=imread('D:picture1.jpg');imshow(I);
I1=rgb2gray(I);k=im2double(I1);k1=40*log(k+1);H=uint8(k1);imshow(H);
4.图像的非线性变换k1=40*exp(k+1);I=imread('D:picture1.jpg');subplot(311)imshow(I);
I1=rgb2gray(I);subplot(312)imshow(I1)
k=im2double(I1);k1=40*exp(k+1);H=uint8(k1);subplot(313)imshow(H);
5.图像的分段线性变换
function Z=imadjust_sec(X,a,b,c,d)[m,n]=size(X);X1=im2double(X);for i=1:m for j=1:n
if(X1(i,j) Z(i,j)=c*X1(i,j)/a; end if(X1(i,j)>=a&&X1(i,j) Z(i,j)=(d-c)*(X1(i,j)-a)/(b-a)+c; end if(X1(i,j)>=b) Z(i,j)=(1-d)*(X1(i,j)-b)/(1-b)+d; end end end X=imread('D:picture6.jpg'); Z=imadjust_sec(X,0.3,0.5,0.2,0.6);imshow(X),figure,imshow(Z); 实 验 报 告 书 系部学生专业班 实验 名称姓名名称 级时间: : : : : 实验一 直方图均衡 一、实验目的 在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方图,并应用MATLAB编程实现图像直方图均衡化程序。 二、实验内容 (1)计算并绘制图像直方图; (2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像; 三、实验运行结果 四、实验中遇到的问题及解决方法 1、显示无法找到图像文件,应将图片与xx.m文件置于同一文件夹; 2、编程过程中应注意标点的输入法,应该用英文输入,否则会报错。 3、编程完成后运行时输入文件名与保存时文件名相同,区分大小写。 五、思考题 (1)、灰度直方图可以反映一幅图像的哪些特征? 答: 1、表征了图像的一维信息。只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。 2、与图像之间的关系是多对一的映射关系。一幅图像唯一确定出与之对应的直方图,但不同图像可能有相同的直方图。 3、子图直方图之和为整图的直方图。(2)均衡化后的直方图有何特点? 答:经直方图均衡化处理后,可以得到一副改善了质量的新图像。这幅图像的灰度层次将不再是呈黑暗色调的图像,而是一副灰度层次较为适中的、比原始图像清晰、明快得多的图像。处理的结果使图像更适合与人的视觉特征或机器的识别系统。 六、实验心得体会 本次实验中,因为初学这个软件,我学习到了在程序中关于图像的运用,以及也复习了课本上的许多知识,加深了对直方图均衡化的理解。 七、程序清单 clear all;I=imread('lena_gray_256.tif');%打开一幅灰度图像 [m,n]=size(I);p=m*n;J=imhist(I)./p; %计算图像的归一化直方图 subplot(1,3,1),imshow(I); subplot(1,3,2),imhist(I,64); subplot(1,3,3),plot(J); (2)直方图均衡化 clear all;Im=imread('region.jpg');J=histeq(Im);%均衡化 subplot(2,2,1);imshow(Im);title('原图');%显示原图 subplot(2,2,2);imhist(Im);title('原图直方图');%显示原图的直方图 subplot(2,2,3);imshow(J);title('均衡化结果');%显示均衡化后的图像 subplot(2,2,4);imhist(J);title('均衡化结果的直方图');%显示均衡化后的直方图 实验二 频域图像增强 一、实验目的 1、频域图像增强 2、掌握基于频域的图像增强方法。 二、实验内容 (1)编程实现图像的理想低通和高通滤波;(2)编程实现图像的巴特沃斯低通和高通滤波。 三、实验运行结果 四、实验中遇到的问题及解决方法 显示图像无法打开,最终查出来时图像格式弄错了。 五、思考题 分析为什么图像通过低通滤波器后变得模糊?为什么通过高通滤波器后得到锐化结果? 答:图像的精细结构及突变部分主要由高频成分起作用,故经低通滤波后图像的精细结构消失,变得模糊;经高通滤波后图像得到锐化。 六、实验心得体会 本实验中遇到很多问题及错误,例如图像打不开、处理后图像模糊等,都是经常容易发生的错误,最后实验几次,就能够逐一自己解决了。使自己对数字图像处理课程中的许多问题有了更实际和确切的深入了解。 七、程序清单 clc;clear;data4=imread('lena.gif');subplot(3,2,1);imshow(data4);title('原图');i=fft2(data4);subplot(3,2,2);i=fftshift(i);z=log(abs(i));x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);mesh(z);%以三维坐标显示该图像频谱图title('原图频谱');[n,m]=size(i);%for k=1:1:n for l=1:1:m if(k^2+l^2)>=190^2 % result(k,l)=0;else result(k,l)=i(k,l);end end end subplot(3,2,4); 对该图进行低通滤波 选取D=190 z=log(abs(result));%三维方式显示低通滤波后的频谱图 x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);mesh(z);title('理想低通滤波后的频谱');subplot(3,2,3);%新建图像显示窗口 result=fftshift(result);%滤波后的数据去中心化 b=ifft2(result);%逆傅里叶变换 imshow(uint8(abs(b)));title('理想低通滤波后的图像');subplot(3,2,6);%新建图像显示窗口 % [n,m]=size(c);%对原图进行高通滤波 for k=1:1:n for l=1:1:m if(k^2+l^2)<=190^2 %选取D=190 result(k,l)=0;else result(k,l)=i(k,l);end end end z=log(abs(result));x=0:1:255;%三维方式显示高通滤波前的频谱图 y=0:1:255;[x,y]=meshgrid(x,y);mesh(z);title('理想高通滤波后的频谱');subplot(3,2,5);result=fftshift(result);%滤波后的数据去中心化 d=ifft2(result);%逆傅里叶变换 imshow(uint8(abs(d)));title('理想高通滤波后的图像');%频域增强(巴特沃斯原型) %二阶巴特沃斯(Butterworth)低通滤波器 %clc;%clear;Figure;J1=imread('lena.gif');subplot(3,2,1);imshow(J1);title('原图');f=double(J1);g=fft2(f);% 傅立叶变换 g=fftshift(g);% 转换数据矩阵 subplot(3,2,2);x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);z=log(abs(g));%取幅度 mesh(z);%以三维坐标显示该图像频谱图 title('原图频谱');[M,N]=size(g);nn=2;% 二阶巴特沃斯(Butterworth)低通滤波器 d0=20;m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));% 计算低通滤波器传递函数 result(i,j)=h*g(i,j); end end subplot(3,2,4);x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);z=log(abs(result));%取幅度 mesh(z);%以三维坐标显示该图像频谱图 title('低通滤波后的频谱');result=ifftshift(result);J2=ifft2(result);J3=uint8(abs(J2));subplot(3,2,3);imshow(J3);title('低通滤波后的图像'); %利用二阶巴特沃斯(Butterworth)高通滤波器 nn=2;% 二阶巴特沃斯(Butterworth)高通滤波器 d0=5;m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2);if(d==0)h=0;else h=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数 end result(i,j)=h*g(i,j); end end subplot(3,2,6);x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);z=log(abs(result));%取幅度 mesh(z);%以三维坐标显示该图像频谱图 title('高通滤波后的频谱');result=ifftshift(result);J2=ifft2(result);J3=uint8(abs(J2));subplot(3,2,5);imshow(J3);title('高通滤波后的图像'); 实验三 图像边缘检测与连接 一、实验目的 图像边缘检测与连接 二、实验内容 (1)编程实现一阶差分边缘检测算法,包括Robert梯度算子、Prewitt算子、Sobel算子等;(2)编程实现二阶差分拉普拉斯边缘检测算法以及LoG检测法和Canny检测法;(3)分析与比较各种边缘检测算法的性能; (4)编程实现Hough变换提取直线 (5)分析Hough变换检测性能; 三、实验运行结果 四、实验中遇到的问题及解决方法 拷贝文件后没改文件名,直接执行时出现错误,最后重新修改后重新编译,使之成功。 五、思考题 (1)边缘的方向是什么意思?为什么要考虑边缘的方向? 答:边缘常常意味着一个区域的终结和另一个区域的开始,图像的边缘也包含了物体的形状的重要信息,他不仅在分析图像时大幅度的减少了要处理的信息量,而且还保护了目标的边界结构。所以考虑边缘的方向很重要。 (2)Hough变换原理是什么? 答:Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为准找参数空间的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。 六、实验心得体会 对于一些图像处理的函数不是很了解,只能够按课本的参照函数拷贝做实验,对于其中的一些函数问题理解不是很透彻,有些甚至完全不懂。还得继续努力。 七、程序清单 1、边缘检测 由edge函数实现各算子对图像的边缘检测 clear all;I = imread('d:office.bmp');I=rgb2gray(I);BW1 = edge(I,'sobel'); %利用Sobel算子进行边缘检测 BW2 = edge(I,'roberts');%利用roberts算子进行边缘检测 BW3 = edge(I,'prewitt');%利用prewitt算子进行边缘检测 BW4 = edge(I,'log'); %利用log算子进行边缘检测 BW5 = edge(I,'canny'); %利用canny算子进行边缘检测 subplot(2,3,1),imshow(I)subplot(2,3,2),imshow(BW1)subplot(2,3,3),imshow(BW2)subplot(2,3,4),imshow(BW3) subplot(2,3,5),imshow(BW4)subplot(2,3,6),imshow(BW5) 2、边缘连接 使用Hough变换作线检测和连接 clear all; RGB = imread('d:M_M.bmp');I=RGB;%I = rgb2gray(RGB);BW = edge(I,'canny'); % 利用Canny算子提取图像边缘 [H,T,R] = hough(BW,'RhoResolution',0.5,'ThetaResolution',0.5);figure(1), imshow(T,R,H,[],'notruesize'), axis on, axis normal xlabel('T'), ylabel('R')p = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); %找到5个较明显的Hough变换峰值 hold on plot(T(p(:,2)),R(p(:,1)),'s','color','white');lines = houghlines(BW,T,R,p,'FillGap',10,'MinLength',10); %查找并链接线段 figure, imshow(BW), hold on %在二值图中叠加显示这些线段 for k = 1:length(lines) xy = [lines(k).point1;lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');end 数字图像处理 实验报告 目录 1.数字图像处理简介 2.实验目的3.实验内容 4.实验结果及代码展示 5.算法综述 6.Matlab优势 7.总结 8.存在问题 一、数字图像处理简介 图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。 图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。 传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。 二、实验目的 巩固所学知识,提高所学能力 三、实验内容 利用matlab的GUI程序设计一个简单的图像处理程序,并含有如下基本功能: 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题 2.对给定图像进行旋转 3.对给定的图像添加噪声(椒盐噪声、高斯噪声) 四、实验结果及代码展示 1.软件设计界面 2.各模块功能展示以及程序代码 (1)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题 效果展示: 代码: a = imread('C:Documents and SettingsAdministrator桌面数字图像舞美.JPG'); i = rgb2gray(a);I = im2bw(a,0.5); subplot(3,1,1);imshow(a);title('源图像')subplot(3,1,2);imshow(i);title('灰度图像')subplot(3,1,3);imshow(I);title('二值图像') (2)图像旋转 原图 效果展示: 代码: clc;clear all;close all; Img=imread('D:My DocumentsMy Pictures5.JPG');Img=double(Img);[h w]=size(Img);alpha=pi/4; wnew=w*cos(alpha)+h*sin(alpha);hnew=w*sin(alpha)+h*cos(alpha);wnew=ceil(wnew); hnew=ceil(hnew);u0=w*sin(alpha); T=[cos(alpha),sin(alpha);-sin(alpha),cos(alpha)];Imgnew2=zeros(hnew,wnew);Imgnew1=zeros(hnew,wnew);for u=1:hnew for v=1:wnew tem=T*([u;v]-[u0;0]);x=tem(1);y=tem(2);if x>=1&&x<=h&&y>=1&&y<=w x_low=floor(x);x_up=ceil(x);y_low=floor(y);y_up=ceil(y);if(x-x_low)<=(x_up-x)x=x_low; else x=x_up; end if(y-y_low)<=(y_up-y)y=y_low; else y=y_up; end p1=Img(x_low,y_low);p2=Img(x_up,y_low);p3=Img(x_low,y_low);p4=Img(x_up,y_up);s=x-x_low;t=y-y_low;Imgnew1(u,v)=Img(x,y); Imgnew2(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;end end end figure;imshow(Imgnew2,[]);B=imrotate(Img,alpha/pi*180);figure;imshow(B,[]); (3)对给定的图像添加噪声(斑点噪声、高斯噪声)效果展示: 代码: I= imread('D:My DocumentsMy Pictures5.JPG');figure,subplot(211);imshow(I);title('原图');J1=imnoise(I,'gaussian',0,0.02); subplot(223);imshow(J);title('添加高斯噪声');J=imnoise(I,'speckle',0.04); subplot(224);imshow(J);title('添加斑点噪声'); 五、算法综述 灰度图像: 一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。 通道是整个Photoshop显示图像的基础。色彩的变动,实际上就是间接在对通道灰度图进行调整。通道是Photoshop处理图像的核心部分,所有的色彩调整工具都是围绕在这个核心周围使用的。 在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的。 用于显示的灰度图像通常用每个采样像素 8 位的非线性尺度来保存,这样可以有 256 级灰度。这种精度刚刚能够避免可见的条带失真,并且非常易于编程。在医学图像与遥感图像这些技术应用中经常采用更多的级数以充分利用每个采样 10 或 12 位的传感器精度,并且避免计算时的近似误差。在这样的应用领域每个采样 16 位即 65536 级得到流行。 二值图像: 是指每个像素不是黑就是白,其灰度值没有中间过渡的图像。二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。 二值图像是每个像素只有两个可能值的数字图像。人们经常用黑白、B&W、单色图像表示二值图像,但是也可以用来表示每个像素只有一个采样值的任何图像,例如灰度图像等。 二值图像中所有的像素只能从0和1这两个值中取,因此在MATLAB中,二值图像用一个由0和1组成的二维矩阵表示。这两个可取的值分别对应于关闭和打开,关闭表征该像素处于背景,而打开表征该像素处于前景。以这种方式来操作图像可以更容易识别出图像的结构特征。二值图像操作只返回与二值图像的形式或结构有关的信息,如果希望对其他类型的图像进行同样的操作,则首先要将其转换为二进制的图像格式,可以通过调用MATLAB提供的im2bw()来实现。 二值图像经常出现在数字图像处理中作为图像掩码或者在图像分割、二值化和dithering的结果中出现。一些输入输出设备,如激光打印机、传真机、单色计算机显示器等都可以处理二值图像。 二值图像经常使用位图格式存储。 二值图像可以解释为二维整数格Z,图像变形处理领域很大程度上就是受到这个观点启发。 图像旋转: 图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程。当然这个点通常就是图像的中心。既然是按照中心旋转,自然会有这样一个属性:旋转前和旋转后的点离中心的位置不变.根据这个属性,我们可以得到旋转后的点的坐标与原坐标的对应关系。由于原图像的坐标是以左上角为原点的,所以我们先把坐标转换为以图像中心为原点。假设原图像的宽为w,高为h,(x0,y0)为原坐标内的一点,转换坐标后的点为(x1,y1)。那么不难得到: x1 = x0-w/2;y1 =-y0 + h/2;在新的坐标系下,假设(x0,y0)距离原点的距离为r,点与原点之间的连线与x轴的夹角为b,旋转的角度为a,旋转后的点为(x1,y1) 噪声: 是电路或系统中不含信息量的电压或电流。在工业与自然界中,存在着各种干扰源(噪声源),如大功率电力电子器件的接入、大功率用电设备的开启与断开、雷击闪电等都会使空间电场和磁场产生有序或无序的变化,这些都是干扰源(或噪声源)。这些源产生的电磁波或尖峰脉冲通过磁、电耦合或是通过电源线等路径进入放大电路,各种电气设备,形成各种形式的干扰。 斑点噪声: 斑点噪声是SAR成像系统的一大特色,源自基本分辨单元内地物的随机散射,在图像上表现为信号相关(如在空间上相关)的小斑点,它既降低了图像的画面质量,又严重影响图像的自动分割、分类、目标检测以及其它定量专题信息的提取。 SAR图像斑点噪声的去除一方面要抑制图像均匀区域斑点噪声,另一方面要保持图像边缘和纹理细节信息。SAR斑点噪声的抑制可通过非相干多视处理,也可使用空间域滤波实现。非相干多视处理会降低图像的地面分辨率。因此,涌现出了一系列空间域滤波方法,如均值滤波、中值滤波、Lee滤波、Kuan滤波、Frost滤波、Sigma滤波以及Gamma Map滤波等。但这类算法存在自身无法克服的矛盾:一方面为增强斑点去噪效果需选较大的滤波窗口,另一方面为保持图像的实际分辨率要求所选的窗口较小。 高斯噪声: 所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。 实验中是通过MATLAB自带的函数产生噪声,各函数如下: J1=imnoise(I,'salt & pepper',0.05);%添加椒盐噪声 J2=imnoise(I,'gaussian',0,0.03); %添加均值为0,方差为0.03的高斯噪声。 六、Matlab优势 MATLAB是一个包含大量算法的集合。其可以快捷的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和差错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。图形处理功能 图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足 模块集合工具箱 MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。 七、总结 运用matlab软件对图像进行处理,让我巩固了之前所学的知识,同时也在这次作业中更加了解到matlab语言在生活中的运用环境和掌握这门语言的重要性 八、存在问题 1.在进行图像增强时要不要讲图像先进行平滑处理? 2.如何增加这个算法的准确度 3.在此次作业中,为何添加椒盐噪声时无法显示 数字图像处理 实验报告 班级:通信103 学号:201027201 姓名:计富威 指导教师:孙洁 实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。5.图像间如何转化。 二、实验内容及步骤 1.利用imread()函数读取一幅图像,假设其名为”第一个.tif”,存入一个数组中; >>I=imread('第一个.tif');2.利用whos命令提取该读入图像”第一个.tif”的基本信息; >>whos I 3.利用imshow()函数来显示这幅图像; >>imshow(I); 第一个.tif 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; >>imfinfo('第一个.tif');5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 >>imwrite(I,'第一个.jpg','quality',50)6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。>>imwrite(I,'第一个.bmp');7.用imread()读入图像:Lenna256.jpg 和camemaman.jpg; >>b=imread('lena256.bmp');>>c=imread('cameraman.tif');8.用imfinfo()获取图像Lenna256.jpg和camemaman.jpg 的大小; >>imfinfo('lena256.bmp');>>imfinfo('cameraman.tif');9.用figure,imshow()分别将Lenna256.jpg和camemaman.jpg显示出来,观察两幅图像的质量。>>figure >>imshow(b);>>figure >>imshow(c); (Lena256.jpg图像截图) (cameraman.jpg图像截图) 10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。>> d=im2bw(b);>>figure >>imshow(b);>>figure >>imshow(d); (二值化截图) 三、实验总结 通过实验MatLab软件的基本使用有了基本的了解,学会了使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换、图像压缩、二值化等的处理,掌握了利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息,掌握在MATLAB中如何通过imshow()语句来读取图像等等。 第二 图像基本运算 一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。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) 三、实验步骤 1.图像的加法运算 在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。imadd函数的调用格式如下: Z = imadd(X,Y)首先读入两幅图像 >>a=imread('第二个原图1.jpg');>>b=imread('第二个原图2.jpg')通过一个加法操作:>> c=imadd(a,b); 给图像的每一个像素加上一个常数可以使图像的亮度增加。如截图 第一张为原图,第二张为亮度加50,第三张为亮度减50 2.图像的减法运算 在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。imsubtract函数的调用格式如下: Z = imsubtract(X,Y); 读入一幅画后通过减法 >>a3=imsubtract(a,50); 3.图像的乘法运算 在MATLAB中,使用immultiply函数实现两幅图像的乘法。immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值。immulitply函数的调用格式如下: Z = immulitply(X,Y)读入一幅图后通过乘法操作 >> a=imread('cameraman.tif');>> b=immultiply(a,1.5); 4.图像的除法运算 在MATLAB中使用imdivide函数进行两幅图像的除法。imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。imdivide函数的调用格式如下: Z = imdivide(X,Y)读入一幅图后通过除法操作 四、实验总结 通过对图像的四则运算了结图像的不同变化过程,对软件的进一步使用也有了更加深刻的认识。 实验三 图像增强—空域滤波 一、实验目的 进一步了解MatLab软件/语言,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。 了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。 二、实验设备与软件 (1)IBM-PC计算机系统 (2)MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3)实验所需要的图片 三、实验内容与步骤 a)调入并显示原始图像“原图像.jpg”。>>I=imread('原图像.jpg');b)利用imnoise命令在图像“原图像.jpg”上加入高斯(gaussian)噪声 >>J = imnoise(I,'gauss',0.02); %添加高斯噪声 c)利用预定义函数fspecial命令产生平均(average)滤波器 d)分别采用3x3和5x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果; >>ave1=fspecial('average',3); %产生3×3的均值模版 >>ave2=fspecial('average',5); %产生5×5的均值模版 >>K = filter2(ave1,J)/255; %均值滤波3×3 >>L = filter2(ave2,J)/255; %均值滤波5×5 e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。 >>M = medfilt2(J,[3 3]); %中值滤波3×3模板 >>N = medfilt2(J,[4 4]); %中值滤波4×4模板 f)利用imnoise命令在图像Sample2-1.jpg 上加入椒盐噪声(salt & pepper)>>J = imnoise(I,'salt& pepper',0.02); %添加椒盐噪声 四、实验总结 椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起,去除脉冲干扰及椒盐噪声最常用的算法是中值滤波。椒盐噪声是指两种噪声,一种是盐噪声,另一种是胡椒噪声。盐=白色,椒=黑色。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。这点我们通过实验结果可以明显看到。中值滤波对于滤除图像的椒盐噪声非常有效。 实验四图像分割 一、实验目的 使用MatLab 软件进行图像的分割。使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。 二、实验要求 要求学生能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能。能够掌握分割条件(阈值等)的选择。完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。 三、实验内容与步骤 (1)使用Roberts 算子的图像分割实验,使用的原图是cameraman.jpg,截图如下 (2)使用Prewitt 算子的图像分割实验 截图如下 (3)使用Sobel 算子的图像分割实验 (4)使用LoG(拉普拉斯-高斯)算子的图像分割实验 四、实验结果 对Roberts算子、Prewitt 算子、Sobel 算子、LoG(拉普拉斯-高斯)算子的运算对图像的结果有了基本的认识,加深学习效果。 实验五 形态学运算 1、实验目的 学习常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。 2、实验要求 利用MatLab工具箱中关于数学形态学运算的函数,计算本指导书中指定二值图像进行处理。 3、实验设备与软件 1.LC-PC计算机系统 2.MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)3.实验所需要的图片 4、实验内容与步骤 1.调入并显示图像“原图.jpg”; 2.调入并显示图像“原图.jpg”; 3.选取合适的阈值,得到二值化图像“原图.jpg”; >>bw = im2bw(I,level); %二值化 4.设置结构元素; 5.对得到的二值图像“原图.jpg”进行腐蚀运算; >>BW2 = imerode(bw,SE1); %腐蚀 6.对得到的二值图像“原图.jpg”进行膨胀运算; >>BW1 = imdilate(bw,SE); %膨胀 7.对得到的二值图像“原图.jpg”进行开运算; >>BW3 = bwmorph(bw, 'open'); %开运算 8.对得到的二值图像“原图.jpg”进行闭运算; >>BW4 = bwmorph(bw, 'close'); %闭运算 9.将两种处理方法的结果作比较; 五、实验总结 通过本次实验,学习了常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,通过自己动手的实验,对课本上的知识有了更加深刻的理解。第三篇:数字图像处理实验报告
第四篇:数字图像处理实验报告
第五篇:数字图像处理实验报告