图像处理报告 正文.docx
- 文档编号:8234789
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:15
- 大小:903.34KB
图像处理报告 正文.docx
《图像处理报告 正文.docx》由会员分享,可在线阅读,更多相关《图像处理报告 正文.docx(15页珍藏版)》请在冰豆网上搜索。
图像处理报告正文
实验一图像增强实验
一、实验目标:
1)掌握读、写图像的基本方法。
2)掌握MATLAB语言中图像数据与信息的读取方法。
3)理解图像灰度变换处理在图像增强的作用。
4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。
二、实验内容:
1)图像的点操作、邻域操作算法。
2)图像的直方图处理算法。
三、实验步骤
1)读入图像用matlab函数实现图像读入
2)实现图像点操作运算(如gamma校正,对数校正等)
3)实现图像的邻域处理(实现均值滤波,拉普拉斯滤波)
4)实现直方图均衡处理
四、实验具体操作及结果
1)伽马校正
实验代码如下:
src=imread('G:
\图像\IPT\LENA.bmp');%读入图像LENA
src=double(src);%转换图像的类型
src=src/256.0;%对原图像进行标准化
%进行γ校正
gamma0p4=uint8(src.^0.4.*256.0);
gamma0p6=uint8(src.^0.6.*256.0);
gamma0p8=uint8(src.^0.8.*256.0);
%绘制原图及处理后的图像
subplot(2,2,1);
imshow(src);title('原图像');
subplot(2,2,2);
imshow(gamma0p4);title('γ=0.4');
subplot(2,2,3);
Imshow(gamma0p4);title('γ=0.6');
subplot(2,2,4);
imshow(gamma0p4);title('γ=0.8');
实验结果如下图所示:
2)对数变换
s=clog(1+r),c为常数,r≥0
实验代码如下:
H=imread('G:
\图像\IPT\LENA.bmp');%读入图片
I=mat2gray(H);%对数变换不支持uint8类型数据,将一个矩阵
%转化为灰度图像的数据格式(double)
J=log(I+1);%进行对数变换
subplot(1,2,1);
Imshow(I);%显示图像
title('原图');
subplot(1,2,2);
Imshow(J);
title('对数变换后的图像')
实验结果如下图所示:
3)均值滤波
实验代码如下:
closeall;
h=imread('G:
\图像\IPT\LENA.bmp');%读入图片
n=input('请输入均值滤波器模板大小\n');
subplot(2,2,1);
imshow(h),title('原始图象');%显示原始图象
g=imnoise(h,'gaussian',0.1,0.002);%加入高斯噪声
subplot(2,2,2);
imshow(g),title('加入高斯噪声之后的图象');%显示加入高斯噪声之后的图象
a(1:
n,1:
n)=1;
p=size(h);x1=double(h);
x2=x1;
fori=1:
p
(1)-n+1
forj=1:
p
(2)-n+1
c=x1(i:
i+(n-1),j:
j+(n-1)).*a;%取出x1中从(i,j)开始的n行n列元素
%与模板相乘
s=sum(sum(c));%求c矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);%将模板各元素的均值赋给模板中心位
%置的元素
end
end
d=uint8(x2);%未被赋值的元素取原值
subplot(2,2,3);
imshow(d),title('自编程序滤波图像');%显示滤波后的图象
实验结果如下图所示:
4)拉普拉斯滤波
实验代码如下:
closeall;
f=imread('G:
\图像\IPT\LENA.bmp');%读入图片
subplot(2,2,1);
imshow(f),title('原始图象');%显示原始图象
[h,w]=size(f);%求得原图像的尺寸
x1=double(f);
x2=x1;
%依次对每个图像元素进行操作
fori=2:
h-1
forj=2:
w-1
x2(i,j)=x1(i+1,j)+x1(i-1,j)+x1(i,j-1)+x1(i,j+1)-4*x1(i,j);
end
end
d=uint8(x2);
subplot(2,2,2);
imshow(d),title('拉普拉斯处理后的图像');%显示锐化后的图象
x3=x1;
fori=2:
h-1
forj=2:
w-1
x3(i,j)=5*x1(i,j)-(x1(i+1,j)+x1(i-1,j)+x1(i,j-1)+x1(i,j+1));%
end
end
e=uint8(x3);
subplot(2,2,3);
imshow(e),title('拉普拉斯增强图像');%显示拉普拉斯滤波后的图象
实验结果如下图所示:
5)直方图均衡化
实验代码如下:
closeall
tu=imread('G:
\图像\IPT\LENA.bmp');%读入图片
graydis=zeros(1,256);%设置矩阵大小
graydispro=zeros(1,256);
new_graydis=zeros(1,256);
new_graydispro=zeros(1,256);
[hw]=size(tu);
new_tu=zeros(h,w);
%计算原始直方图各灰度级像素个数graydis
forx=1:
h
fory=1:
w
graydis(1,tu(x,y))=graydis(1,tu(x,y))+1;
end
end
%计算原始直方图graydispro
graydispro=graydis./sum(graydis);
subplot(2,2,1);
plot(graydispro);
title('灰度直方图');
xlabel('灰度值');ylabel('像素的概率密度');
%计算原始累计直方图
fori=2:
256
graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);
end
%计算和原始灰度对应的新的灰度t[],建立映射关系
fori=1:
256
t(1,i)=floor(254*graydispro(1,i)+0.5);
end
%统计新直方图各灰度级像素个数new_graydis
fori=1:
256
new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i);
end
%计算新的灰度直方图new_graydispro
new_graydispro=new_graydis./sum(new_graydis);
subplot(2,2,2);
plot(new_graydispro);
title('均衡化后的灰度直方图');
xlabel('灰度值');ylabel('像素的概率密度');
%计算直方图均衡后的新图new_tu
forx=1:
h
fory=1:
w
new_tu(x,y)=t(1,tu(x,y));
end
end
subplot(2,2,3);
imshow(tu,[]);
title('原图');
subplot(2,2,4);
imshow(new_tu,[]);
title('直方图均衡化后的图');%显示直方图均衡化后的图
实验结果如下图所示:
实验二图像分割实验
一、实验目标:
1)理解图像分割的基本概念;
2)理解图像边缘提取的基本概念;
3)掌握进行边缘提取的基本方法;
4)掌握用阈值法进行图像分割的基本方法。
二、实验内容:
1)实现边缘检测算法。
2)实现用Hough变换检测直线的算法。
三、实验步骤
1)读入图像用matlab函数实现图像读入
2)检测图像的边缘
3)实现Hough变换,检测出图像中的直线的方程
4)输出结果
4、实验具体操作及结果
1)边缘检测
实验代码如下:
closeall;
a=imread('G:
\图像\IPT\2.jpg');%读入图片
f=rgb2gray(a);%将彩色图像转换成灰色图像
subplot(2,2,1);
imshow(f),title('原始图象');%显示原始图象
[h,w]=size(f);
x1=double(f);
%Roberts算子处理图像
x2=x1;
fori=2:
h-1
forj=2:
w-1
x2(i,j)=x1(i+1,j+1)+x1(i+1,j)-x1(i,j+1)-x1(i,j);
end
end
d=uint8(x2);
subplot(2,2,2);
imshow(d),title('Roberts处理后的图像');%显示Roberts处理后的图像
%Sobel算子处理图像'
x3=x1;
fori=2:
h-1
forj=2:
w-1
x3(i,j)=2*x1(i+1,j)+x1(i+1,j+1)+x1(i+1,j-1)+x1(i-1,j+1)+2*x1(i,j+1)+x1(i+1,j+1)-(2*x1(i-1,j-1)+2*x1(i-1,j)+x1(i-1,j+1)+2*x1(i,j-1)+x1(i+1,j-1));%
end
end
e=uint8(x3);
subplot(2,2,3);
imshow(e),title('Sobel处理后的图像');%显示Sobel处理后的图像
%拉普拉斯处理图像
x4=x1;
fori=2:
h-1
forj=2:
w-1
x4(i,j)=8*x1(i,j)-(x1(i+1,j)+x1(i+1,j+1)+x1(i+1,j-1)+x1(i-1,j-1)+x1(i-1,j+1)+x1(i-1,j)+x1(i,j-1)+x1(i,j+1));
end
end
c=uint8(x4);
subplot(2,2,4);
imshow(c),title('拉普拉斯处理后的图像');%显示拉普拉斯处理后的图像
实验结果如下图所示:
2)Hough变换
实验代码如下:
sourcePic=imread('G:
\图像\IPT\3.jpg');%读入图片
[height,width,l]=size(sourcePic);%求得原图像的尺寸
grayPic=zeros(height,width);
%转换成灰度图象
fori=1:
height
forj=1:
width
grayPic(i,j)=(sourcePic(i,j,1)+sourcePic(i,j,2)+sourcePic(i,j,3))/3;
end
end
%log算子的计算值
logNum=0;
edgePic=zeros(height,width);
fori=3:
height-2%log算子提取边界
forj=3:
width-2
logNum=16*grayPic(i,j)-grayPic(i-2,j)-grayPic(i-1,j-1)-2*grayPic(i-1,j)-grayPic(i-1,j+1)-grayPic(i,j-2)-2*grayPic(i,j-1)-2*grayPic(i,j+1)-grayPic(i,j+2)-grayPic(i+1,j-1)-2*grayPic(i+1,j)-grayPic(i+1,j+1)-grayPic(i+2,j);
if(logNum>0)
edgePic(i,j)=255;
else
edgePic(i,j)=0;
end
end
end
subplot(1,2,1);
imshow(edgePic),title('经过log处理后图象');%显示log处理后图象
%Hough变换检测直线,g(x)=(a,p)为边界点对应的平面
ma=180;%a的值为0到180度
mp=round(sqrt(height^2+width^2));%对应P的最大值
npc=zeros(ma,2*mp);%用于记录(a,p)对应的点的个数
npp=cell(ma,2*mp);%用于记录(a,p)对应的点的坐标
fori=1:
height%计算(a,p)的值,并做相应记录
forj=1:
width
if(edgePic(i,j)==255)
fork=1:
ma
p=round(i*cos(pi*k/180)+j*sin(pi*k/180));
if(p>0)
npc(k,mp+p)=npc(k,mp+p)+1;
npp{k,mp+p}=[npp{k,mp+p},[i,j]'];
else
ap=abs(p)+1;
npc(k,ap)=npc(k,ap)+1;
npp{k,ap}=[npp{k,ap},[i,j]'];
end
end
end
end
end
fori=1:
ma%根据(a,p)对应的点的个数,
%用红色标出相应直线
forj=1:
mp*2
if(npc(i,j)>90)%将提取直线的阈值设为90
lp=npp{i,j};
fork=1:
npc(i,j)
sourcePic(lp(1,k),lp(2,k),1)=255;
sourcePic(lp(1,k),lp(2,k),2)=0;
sourcePic(lp(1,k),lp(2,k),3)=0;
end
end
end
end
subplot(1,2,2);
imshow(sourcePic),title('经过hough变换处理后图象');%显示检测出直线后的图像
实验结果如下图所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像处理报告 正文 图像 处理 报告