matlab图像倾斜校正

matlab图像倾斜校正

ID:13104751

大小:420.00 KB

页数:4页

时间:2018-07-20

matlab图像倾斜校正_第1页
matlab图像倾斜校正_第2页
matlab图像倾斜校正_第3页
matlab图像倾斜校正_第4页
资源描述:

《matlab图像倾斜校正》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2014年1月4日图像倾斜校正_基于MATLAB目的:实现对图像的倾斜校正。方法一:利用霍夫变换,代码如下:clear,clc,closeall;I=imread('1.jpg');bw=rgb2gray(I);bw=im2bw(I,graythresh(bw));bw=double(bw);BW=edge(bw,'canny');imshow(BW);title('canny边界图像');[H,T,R]=hough(BW);figure,imshow(H,[],'XData',T,'YData',R,'InitialMagn

2、ification','fit');xlabel('theta'),ylabel('rho');axison,axisnormal,holdon;P=houghpeaks(H,4,'threshold',ceil(0.3*max(H(:))));x=T(P(:,2));y=R(P(:,1));plot(x,y,'s','color','white');lines=houghlines(BW,T,R,P,'FillGap',50,'MinLength',7);figure,imshow(BW),title('直线标识图像')

3、;max_len=0;holdon;fork=1:length(lines)xy=[lines(k).point1;lines(k).point2];%标出线段plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');%标出线段的起始和终端点plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');len=norm(li

4、nes(k).point1-lines(k).point2);Len(k)=len;if(len>max_len)2014年1月4日max_len=len;xy_long=xy;endend%强调最长的部分plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','blue');[L1Index1]=max(Len(:));%最长线段的起始和终止点x1=[lines(Index1).point1(1)lines(Index1).point2(1)];y1=[lines(Index

5、1).point1(2)lines(Index1).point2(2)];%求得线段的斜率K1=-(lines(Index1).point1(2)-lines(Index1).point2(2))/...(lines(Index1).point1(1)-lines(Index1).point2(1))angle=atan(K1)*180/piA=imrotate(I,-angle,'bilinear');%imrate是逆时针的所以取一个负号figure,imshow(A);结果:方法二:由于这里的图形比较规则,可针对性地对图

6、形进行边缘检测,求倾斜角,再根据角度进行校正。代码如下:clearall;clc;closeall;Img=imread('c:\ce.jpg');figure;subplot(2,2,1);imshow(Img);title('原图');I=rgb2gray(Img);subplot(2,2,2);imshow(I);title('灰度图像');bw=im2bw(I,graythresh(I));bw=edge(bw,'canny');subplot(2,2,3);imshow(bw);title('canny边界图像')

7、;[r,c]=find(bw);[rmin,indr]=min(r);2014年1月4日[cmin,indc]=min(c);p1=[rmin,c(indr)];p2=[r(indc)cmin];holdon;plot([p1(2)p2(2)],[p1(1)p2(1)],'r-o');k=(p2(1)-p1(1))/(p2(2)-p1(2));theta=atan(k)/pi*180;I1(:,:,1)=imrotate(Img(:,:,1),theta,'bilinear');I1(:,:,2)=imrotate(Img(:

8、,:,2),theta,'bilinear');I1(:,:,3)=imrotate(Img(:,:,3),theta,'bilinear');subplot(2,2,4);imshow(I1);title('摆正图像');结果:方法三:跟方法二一个原理,只是这个看着更简洁一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。