图像处理实验报告.docx
- 文档编号:6624233
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:24
- 大小:831.85KB
图像处理实验报告.docx
《图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《图像处理实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
图像处理实验报告
1常用MATLAB图像处理命令
一、实验目的
1、熟悉并掌握MATLAB工具的使用;
2、实现图像的读取、显示、代数运算和简单变换。
二、实验环境
MATLAB2012a版本、WIN7计算机
三、常用函数
●读写图像文件
1imread
imread函数用于读入各种图像文件,如:
a=imread('e:
\w01.tif')
2imwrite
imwrite函数用于写入图像文件,如:
imwrite(a,'e:
\w02.tif',’tif’)
3imfinfo
imfinfo函数用于读取图像文件的有关信息,如:
imfinfo('e:
\w01.tif')
●图像的显示
1image
image函数是MATLAB提供的最原始的图像显示函数,如:
a=[1,2,3,4;4,5,6,7;8,9,10,11,12];
image(a);
2imshow
imshow函数用于图像文件的显示,如:
i=imread('e:
\w01.tif');
imshow(i);
title(‘原图像’)%加上图像标题
3colorbar
colorbar函数用显示图像的颜色条,如:
i=imread('e:
\w01.tif');
imshow(i);
colorbar;
4figure
figure函数用于设定图像显示窗口,如:
figure
(1);/figure
(2);
5subplot
把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。
Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。
6plot
绘制二维图形
plot(y)
Plot(x,y)xy可以是向量、矩阵。
●图像类型转换
1rgb2gray
把真彩图像转换为灰度图像
i=rgb2gray(j)
2im2bw
通过阈值化方法把图像转换为二值图像
I=im2bw(j,level)
Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围的n%
3imresize
改变图像的大小
I=imresize(j,[mn])将图像j大小调整为m行n列
●图像运算
1imadd
两幅图像相加,要求同样大小,同种数据类型
Z=imadd(x,y)表示图像x+y
2imsubstract
两幅图像相减,要求同样大小,同种数据类型
Z=imsubtract(x,y)表示图像x-y
3immultiply
Z=immultiply(x,y)表示图像x*y
4imdivide
Z=imdivide(x,y)表示图像x/y
四、心得体会
学习了matlab中基本的图像处理命令,为以后图像处理打下了较好的基础。
2、对图像灰度分布的分析和直方图均衡
1、实验目的
(1)理解灰度分布直方图、累积灰度分布函数的概念,图像二值化的概念。
(2)学习用matlab编程计算图像直方图,累积分布函数并进行初步分析。
(3)深入理解灰度分布直方图的意义,并根据灰度直方图进行简单图像增强——直方图均衡。
(4)改进直方图均衡算法,进行直方图分段均衡并进行分析。
2、编程实现
closeall;clear;clc;
%%读入图像并转换为灰度图,显示
I=imread('E:
\photos\109NIKON\e1.JPG');
figure
(1);
imshow(I);
J=rgb2gray(I);
figure
(2);
imshow(J);
one_or_zero=(J>128);
figure(3)
imshow(one_or_zero)
%%对原始灰度图的分析
[m,n]=size(J);%图片的维数
note=zeros(1,256);%统计对应某灰度值图像点数
fori=1:
m
forj=1:
n
note(J(i,j)+1)=note(J(i,j)+1)+1;%256色是不是0—255?
end
end
figure(4)
stem(note);%灰度分布直方图(imhist函数可实现)sum_note=zeros(1,256);
sume_note
(1)=note
(1);
fori=2:
256
sum_note(i)=sum_note(i-1)+note(i);
end
figure(5)
plot(sum_note)%累积分布图
axis([02560m*n])
gridon
%%%图像灰度映射关系的确定
%fff=zeros(1,256);
%fori=1:
255
%fff(i+1)=note(i+1)*255/m/n+fff(i);%核心!
%%fff(i+1)=sum_note(i+1)*255/m/n;%运算量会稍小一些
%end
%floor(fff);%取整,貌似不取整也不会错
%%fff虽然是一个变量,记录了相应的对应关系
fff=fenduan();
%%图像灰度均衡简单处理
K=J;%新建图像
fori=1:
m
forj=1:
n
K(i,j)=fff(J(i,j)+1);
end
end
figure(6)
imshow(K)%%处理后的图像
note_f=zeros(1,256);
%%对新图像的灰度分析这块和前边的分析完全相同,以后用考虑变成函数调用
fori=1:
m
forj=1:
n
note_f(K(i,j)+1)=note_f(K(i,j)+1)+1;
end
end
figure(4);holdon;
stem(note_f,'r');
sum_note_f=zeros(1,256);
sume_note_f
(1)=note_f
(1);
fori=2:
256
sum_note_f(i)=sum_note_f(i-1)+note_f(i);
end
figure(5);holdon;
plot(sum_note_f,'r')
axis([02560m*n])
gridon
%%
分段均衡时调用的函数:
%%图像灰度映射关系的确定
functionfff=fenduan()
fff=zeros(1,256);
fff(1:
100)=0;
fori=100:
150
fff(i+1)=(i-100)*3;
end
fff(152:
199)=150;
fori=200:
250
fff(i)=(i-200)*2+150;
end
fori=251:
256
fff(i)=i;
end
floor(fff);%取整,貌似不取整也不会错
figure(8)
plot(fff)
%fff虽然是一个变量,记录了相应的对应关系f
3.实验结果与分析
3.1直方图均衡结果与分析
(a)原始彩色图像(b)灰度图
(c)图像二值化结果(128为界)(d)直方图均衡效果图
图2.2灰度分布直方图,蓝色对应原始图像,红色对应均衡后图像
图2.3均衡前后累积分布函数(未归一化)
结论:
直方图均衡后,灰度分布均匀,图像较处理前细节表现有所改善
3.2直方图分段均衡
(a)原始彩色图像(b)灰度图
(c)图像二值化结果(128为界)(d)分段均衡效果图
图2.5分段均衡映射曲线
图2.6灰度分布直方图,蓝色对应原始图像,红色对应分段均衡后图像
图2.7分段均衡前后累积分布函数(未归一化)
说明与分析:
(1)首先说明分段映射曲线的选取。
从图像的灰度分布直方图中可以看到,灰度区间100-150以及200-250内像素点分布校多而其余区间基本没有像素点分布,所以要压缩像素分布点较少的区间,而在这两段进行扩张。
100—150区间进行了3倍扩展,200-250区间进行了2倍扩展。
当然这并不是最优的映射方案,但在处理此图像时有效果,能说明问题。
(2)由图像以及直方图、累积分布曲线可以看出图像有所改善。
(3)分段法对于不同的图像需要采取不同的曲线。
要注意到此方法的局限性。
而直接的整个区间内的均衡不存在这个问题。
(4)注意到有失真现象。
而且原本灰度在0-100,以及150-200的像素点归为0和150,仔细观察会发现这使图像质量有所下降。
当然,这是某些区间扩展所必然引起的。
我们要做的,根本上来说就是寻求某种更好的折中方法。
3QDHE算法的实现
1、实验目的
(1)、跟踪学术前沿,深入理解直方图均衡算法
(2)、实现QDHE(QuadrantsDynamicHistogramEqualizationforContrastEnhancement,基于动态象限直方图均衡的对比度增强)算法。
2、QDHE算法说明
(1)、QDHE算法是基于HE、PHE、BBHE、DPHE改善算法。
(2)、算法计算过程
第一步:
直方图分割,按照像素点分布直方图将所以像素点等量分布在四个区间中。
第二步:
ClippingProcess
ThereasonbehindtheclippingprocessistocontroltheenhancementrateofHEinordertoovercomeunnaturalandover-enhancementoftheprocessedimagetooccur.
ClippingthresholdisreplacedbytheaverageofthenumberoftheintensityintheproposedQDHE.
第三步:
灰度区间重分配
第四部:
子区间内进行直方图均衡
3、编程实现
%Quadtantsdynamichistogramequalization动态象限对比度均衡实现代码
closeall;clear;clc;
L=256;
%%读入图像并转换为灰度图,显示
I=imread('E:
\photos\study\IMG_20130903_211732340.JPG');
J=rgb2gray(I);
figure(20);
imshow(J);
[m,n]=size(J);%图片的维数
%%图像灰度做预处理
fori=1:
m
forj=1:
n
ifJ(i,j)>100
J(i,j)=round(100*rand(1,1));
end
end
end
figure
(2)
imshow(J)%处理后的图像
%%对原始灰度图的分析
note=zeros(1,256);%统计对应某灰度值图像点数
fori=1:
m
forj=1:
n
note(J(i,j)+1)=note(J(i,j)+1)+1;%256色是不是0—255?
end
end
figure(3)
stem(note);
figure(4)
imhist(J)
%灰度分布直方图(imhist函数可实现)
sum_note=zeros(1,256);
sum_note
(1)=note
(1);
fori=2:
256
sum_note(i)=sum_note(i-1)+note(i);
end
figure(5)
plot(sum_note)%累积分布图
axis([02560m*n])
gridon
%%A区间划分
%这里只实现均衡算法,累积分布函数在别处实现,额可是我还要求分割点,先copy一下吧
[note,sum_note,m,n]=hist_mine(J);
%区间分割点
mm_huidu=[00000];
fori=1:
256
ifnote(i)~=0;
break;
end
end
mm_huidu
(1)=i-1;
m1=m*n/4;
m2=m*n*0.5;
m3=m*n*0.75;
fori=256:
-1:
1
ifnote(i)~=0;
break;
end
end
mm_huidu(5)=i-1
mm=[0,m1,m2,m3,m*n];
%找到区间分割点对应的灰度值
forj=2:
4
fori=2:
256
ifsum_note(i-1)
mm_huidu(j)=i;
break;
end
end
end
%分别以mm_huidu为分割点,分割点无论是归前还是归后都有误差,但不大,忽略之,归后
%%BClippingprocess
%我认为Tc是所有灰度值对应的像素(不为零)的的平均值,先确定阀值Tc
sum_note_you=0;
fori=mm_huidu
(1):
mm_huidu(5)
sum_note_you=note(i+1)+sum_note_you;
end
Tc=sum_note_you/(mm_huidu(5)-mm_huidu
(1));
%clipping
fori=1:
256
ifnote(i)>Tc
note(i)=Tc;
end
end
%%C灰度区间重分配%这里的理解可能有错误
fori=1:
4
span(i)=mm_huidu(i+1)-mm_huidu(i);
range(i)=(L-1)*span(i)/(mm_huidu(5)-mm_huidu
(1));
end
I_start
(1)=0;
I_end(4)=255;
fori=1:
3
I_start(i+1)=range(i)+I_start(i);
end
fori=1:
4
I_end(i)=I_start(i)+range(i);
end
%%D直方图均衡%在单个直方图内进行直方图均衡
%%注意这个直方图均衡是在clipping之后的单个直方图中进行均衡,努力写个函数……
%%像往常一样,先建立映射关系,这个要在四个区间内映射,复杂度稍高
%fori=1:
4
%sum_note_sub(i,:
)=zeros(1,mm_huidu(i+1)-mm_huidu(i))
%end
%sum_note_sub=[sum_note_subsum_note_subsum_note_subsum_note_sub];
%fork=1:
4
%fori=mm_huidu(k):
mm_huidu(k+1)
%i=i+1;
%sum_note_sub(k,i)=note(i)+sum_note_sub(k,i)
%end
%figure
%plot(sume_note_sub(k))
%end
%
%
%forii=1:
4
%ifJ(i,j)>mm_huidu(i)&&J(i,j)<=mm_huidu(i+1)
%break
%end
%end
%sum_note(J(i,j))*range(ii)+I_start(ii)
sum_clip=fendu_cdf(note,mm_huidu);
fff=fenduan_yingshe(sum_clip,mm_huidu,I_start,I_end);
%%图像灰度均衡简单处理
K=J;%新建图像
fori=1:
m
forj=1:
n
K(i,j)=fff(J(i,j)+1);
end
end
figure(6)
imshow(K)%处理后的图像
note_f=zeros(1,256);
%%对新图像的灰度分析这块和前边的分析完全相同,以后用考虑变成函数调用
fori=1:
m
forj=1:
n
note_f(K(i,j)+1)=note_f(K(i,j)+1)+1;
end
end
figure(3);holdon;
stem(note_f,'r');
sum_note_f=zeros(1,256);
sume_note_f
(1)=note_f
(1);
fori=2:
256
sum_note_f(i)=sum_note_f(i-1)+note_f(i);
end
figure(5);holdon;
plot(sum_note_f,'r')
axis([02560m*n])
gridon
clc;clear;
调用的分段累积分布函数如下:
functionsum_clip=fendu_cdf(note,mm_huidu)
sum_clip={};
fori=1:
4
m1=mm_huidu(i);
m2=mm_huidu(i+1);
%m2,bigeronem1smallone
sum_note=zeros(1,m2-m1);
%%%m2不计入,前几段正确,最后一段最后一个灰度值没有录入,对此细节暂不处理
%此问题已通过最后的加一解决
%fori=256:
-1:
1
%ifnote(i)~=0;
%break;
%end
%end
%mm_huidu(5)=i+1;
sum_note
(1)=note(m1+1);
forj=m1+1:
m2-1
sum_note(j-m1+1)=sum_note(j-m1)+note(j);
end
sum_clip{i}=sum_note/sum_note(m2-m1);
end
映射关系生成函数如下:
functionfff=fenduan_yingshe(sum_clip,mm_huidu,I_start,I_end)
fff=zeros(1,256);
mm_huidu=round(mm_huidu)
fori=1:
4
forj=mm_huidu(i)+1:
mm_huidu(i+1)
fff(j)=sum_clip{i}(j-mm_huidu(i))*(I_end(i)-I_start(i))+I_start(i);
end
end
3.实验结果与分析
3.1直方图均衡结果与分析
图3.1预处理之后、处理之前的图片
图3.2处理后图片
图3.3处理前后直方图,蓝色对应处理前,红色对应处理后
图3.3处理前后累积分布函数,蓝色对应处理前,红色对应处理后
说明与分析:
(1)、对比两图像可以发现,经过处理,总体来看对比度得到了增强;从细节观察,发现乌龟右前脚脚趾变得清晰。
说明此算法对图像质量起到了改善作用。
(2)、对预处理的说明:
从原理上分析,QDHE算法对图像的改善作用来自两方面:
一方面是图像灰度区间的扩展,另一方面是区间内进行直方图均衡。
原图像灰度值大于100的像素点很少,但有分布,如此相应灰度区间被占用则灰度空间扩展的效果将不明显,所以进行预处理。
(3)、从直方图和累积分布函数的图像也可发现有改善作用。
(4)、此处理方法适用于光照不足时获得的图像的处理,由于像素点的灰度值分布在零到几十的范围内,经过灰度区间重新分配并进行区间内均衡会有较好的效果;对于灰度值分配不均,但分布范围较大的图片,处理效果不明显。
4简单的目标跟踪算法的实现
1、实验目的
(1)、理解目标跟踪的概念
(2)、掌握初步的目标跟踪算法,如相关算法、差值平方法、差值绝对值法
(3)、实现算法后,进行简单的改进并观察对性能的影响
2、目标跟踪的编程实现
closeall;clear;clc;
%%模板信息
M=rgb2gray(imread('E:
\photos\study\feiji\pic436.bmp'));
%T_cai=imread('E:
\photos\study\feiji\plane_zuolun.bmp');
%T=zeros(100,200);
%T=M(171:
310,201:
500);%飞机主体第一种比较好用的
T=M(120:
310,201:
550);%飞机主体,大的,第二种方法
%%熊杰模板
M=rgb2gray(imread('E:
\photos\study\feiji\pic435.bmp'));
%T_cai=imread('E:
\photos\study\feiji\plane_zuolun.bmp');
%T=zeros(100,200);
%T=M(171:
310,201:
500);%飞机主体第一种比较好用的
T=M(107:
300,215:
500);%飞机主体,大的,第二种方法
%%
%T=M(100:
200,490:
550);%飞机尾
%T=M(100:
200,500:
540);%飞机尾,另一个
%T=M(190:
260,290:
440);
[m_T,n_T]=size(T);
%fori=1:
m_T
%forj=1:
n_T
%ifT(i,j)>100
%T(i,j)=200;
%end
%end
%end
figure
(2);
imshow(T);
T_ave=sum(sum(T))/m_T/n_T;
Fangcha_T=sum(sum((T-T_ave).^2));
%%打开图像
forpic=12:
57%36:
36%12:
13%:
57
I=imread(['E:
\photos\study\feiji\pic4',num2str(pic),'.bmp']);
J=rgb2gray(I);
[m_J,n_J]=size(J);
%%求相关
fori=1:
10:
m_J-m_T+1%行遍历
forj=1:
10:
n_J-n_T+1%列遍历
%%第一种算法
%Ave_J_ij=sum(sum(J(i:
m_T+i-1,j:
n_T+j-1)))/m_T/n_T;
%Fangcha_J_ij=sum(sum((T-T_ave).^2));
%R(i,j)=sum(sum(((J(i:
m_T+i-1,j:
n_T+j-1)-Ave_J_ij).*(T-T_ave))))/...
%Fangcha_T.^(1/2)/Fangcha_J_ij.^(1/2);
%%第二种算法
R(i,j)=sum(sum((J(i:
m_T+i-1,j:
n_T+j-1)-T).^2));%R((i-1)/10+1,(j-1)/10+1)%10跨步
%%第三种算法
%R(i,j)=sum(sum((abs(J(i:
m_T+i-1,j:
n_T+j-1)-T))));
end
end
%%发现位置并标记
%[row,colum]=find(R==max(max(R)));%第一种算法,求最大相关值
[row,colum]=find(R==min(min(R(R~=0))));%第二种算法,求最小值
K=zeros(m_T-10,n_T-10);
K=I(row+5:
row+m_T-1-5,colum+5:
n_T+colum-1-5);
I(row:
row+m_T-1,colum:
n_T+colum-1)=255;%-J(row:
m_T+row-1,colum:
n_T+colum-1);
I(row+5:
row+m_T-1-5,colum+5:
n_T+colum-1-5)=K;
imshow(I);
pause(0.01);
%max(max(R))
min(m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理 实验 报告