您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 图像信息处理之图像旋转和阈值分割
图像信息处理上机实验报告图像旋转、阈值分割1、实验内容:(1)写出以图像中心点作为支点旋转任意角度,图像仍保持完整的旋转程序;(2)对Fig33图,采用灰度直方图峰谷方法分离出米粒,要求编写程序自动求直方图峰谷对应的分割阈值;(3)练习PS中把jimoxiong变换到jimoxiong2,或者反向恢复,并证明你的操作是成功的,写出基本步骤。2、具体实验一、图像旋转:实验原理:(1):计算公式:i'=icosθ-jsinθj'=icosθ+jcosθ(i,j)为原图像素点坐标,(i',j')是对应像素点经旋转变换后图像像素点坐标;(2):对计算所得坐标值取整;(3)对取整后坐标值范围进行画布扩大;(4)对图像出现的空穴进行实验程序:functionr=imrotate(I,theta)I=imread('L:\图像信息处理\17周上机\Fig33.BMP');[row,col]=size(I);theta=(30*pi/180);%旋转30度cosa=cos(theta);sina=sin(theta);%原图四个顶点坐标srcx1=-col*0.5;srcy1=row*0.5;srcx2=col*0.5;srcy2=row*0.5;srcx3=-col*0.5;srcy3=-row*0.5;srcx4=col*0.5;srcy4=-row*0.5;%图像旋转后四个顶点坐标dstx1=cosa*srcx1-sina*srcy1;dsty1=sina*srcx1+cosa*srcy1;dstx2=cosa*srcx2-sina*srcy2;dsty2=sina*srcx2+cosa*srcy2;dstx3=cosa*srcx3-sina*srcy3;dsty3=sina*srcx3+cosa*srcy3;dstx4=cosa*srcx4-sina*srcy4;dsty4=sina*srcx4+cosa*srcy4;%计算旋转后图像宽度和高度%旋转后图像高为对应顶点纵坐标之差较大值h=max(abs(dsty4-dsty1),abs(dsty2-dsty3))+0.5;%旋转后图像宽为对应顶点纵坐标之差较大值w=max(abs(dstx4-dstx1),abs(dstx2-dstx3))+0.5;%对新图高宽进行四舍五入h=floor(h);w=floor(w);r=zeros(h,w);f1=-w*0.5*cosa-h*0.5*sina+0.5*col;f2=w*0.5*sina-h*0.5*cosa+0.5*row;forx=1:wfory=1:hx0=floor(x*cosa+y*sina+f1);y0=floor(-x*sina+y+cosa+f2);%对图像进行填充ifx00&&x0col&&y00&&y0=rowr(y,x)=I(y0,x0);endendendsubplot(121),imshow(I);subplot(122);imshow(r,[]);实验结果:二:阈值分割实验原理:所谓阈值方法就是确定某个阈值TH,根据图像中每个像素的灰度值大于或小于该阈值TH,来进行图像分割。当图像的灰度直方图为双峰分布时,表明图像的内容大致分为两个部分,分别为灰度分布的两个山峰的附近。灰度直方图的峰谷阈值方法是一种有效且非常简单的阈值方法,但是该方法有一个局限性,就是要求图像的灰度直方图必须具有双峰性。实验程序:Im=imread('L:\图像信息处理\17周上机\Fig33.BMP');subplot(1,3,1),imhist(Im),title('灰度直方图')subplot(1,3,2),imshow(Im),title('原像')[x,y]=size(Im);b=double(Im);zd=double(max(max(Im)))%求出图象中最大的灰度zx=double(min(min(Im)))%最小的灰度T=double((zd+zx))/2;count=double(0);while1%迭代最佳阈值分割算法count=count+1;S0=0.0;n0=0.0;S1=0.0;n1=0.0;fori=1:xforj=1:yifdouble(Im(i,j))=TS1=S1+double(Im(i,j));%大于阈域值图像点灰度值累加n1=n1+1;%大于阈域值图像点个数累加elseS0=S0+double(Im(i,j));%小于阈域值图像点灰度值累加n0=n0+1;%小于阀域值图像点个数累加endendendT0=S0/n0;T1=S1/n1;ifabs(T-((T0+T1)/2))0.1%迭代至前后两次阀域值相差几乎为0时停止迭代。break;elseT=(T0+T1)/2;%在阈值T下,迭代阈值的计算过程endendi1=im2bw(Im,T/255);%图像在最佳阈值下二值化subplot(1,3,3),imshow(i1)title('结果')zd=255zx=0T=75.7379实验结果:三、ps原图:实验结果:步骤:编辑——新建画布——选择合适尺寸,并将将背景设为白色打开原图——将图层解锁——调整原图大小——点击移动将原图拖动到新建图层中水平翻转——自由变换调整旋转到合适位置合并图层并导出3、总结与分析:实验中由于自己对软件的不熟悉,使用时就总会遇到一些很细节性的问题,比如全角、半角符号、函数名、使用规则、存放路径等等很细小的问题,往往会在这上面花费很多很多时间;另一个问题便是自己的逻辑思维能力了,拿到题目,用脑子能想到怎么做,但是具体要编程转化成语言时就很难了,自己往往纠结半天也出不来结果,总要借助辅导书才能完成。Phtoshop部分自己做得时候往往也都是辅导书和网络一起辅助进行,这个过程,自己确实也熟悉了它的运行环境,对photoshop算是有了一定程度的了解。总的来还是自己能力有所欠缺,没有真正地去学好这门语言,而且课前的准备工作做得也不够充分导致自己实验时总是落后于别人,课后自己还要花更多的时间去补习。
本文标题:图像信息处理之图像旋转和阈值分割
链接地址:https://www.777doc.com/doc-4292313 .html