设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2159|回复: 1

matlab练习程序(计算图像旋转角度)

[复制链接]

17

主题

198

金钱

287

积分

入门用户

发表于 2019-11-19 16:05:30 | 显示全部楼层 |阅读模式

比如有图像1,将其旋转n度得到图像2,问如何比较两张图像得到旋转的度数n。

算法思路参考logpolar变换:

1.从图像中心位置向四周引出射线。

2.计算每根射线所打到图像上的像素累计和,得到极坐标灰度曲线。

3.比较两张图的灰度曲线,得到最相关的偏移位置,即为两张图像的旋转角度。

原图:
1.jpg

旋转了10°的图像:
2.png

灰度曲线:
3.png

代码如下:
main.m
  1. clear all;
  2. close all;
  3. clc;

  4. img1 = imread('lena.jpg');
  5. img2 = imrotate(img1,15);

  6. imshow(img1)
  7. figure;
  8. imshow(img2)

  9. re1 = getCurve(img1);
  10. re2 = getCurve(img2);

  11. figure;
  12. plot(re1);
  13. hold on;
  14. plot(re2);

  15. su=zeros(length(re1),1);
  16. for i=1:length(re1)
  17.     tmp = circshift(re2,i);
  18.     su(i) =sum(tmp.*re1);
  19. end

  20. [ma,ind] = max(su);
  21. ind/10
复制代码


getCurve.m
  1. function re = getCurve(img)

  2. [m,n]=size(img);

  3. oy=m/2;
  4. ox=n/2;

  5. %求中心点到图像四个角的距离
  6. up_left=sqrt((oy-0)^2+(ox-0)^2);
  7. up_right=sqrt((oy-0)^2+(ox-n)^2);
  8. down_left=sqrt((oy-m)^2+(ox-0)^2);
  9. down_right=sqrt((oy-m)^2+(ox-n)^2);

  10. num=3600;
  11. %求中心点距离四角距离的最大值,作为变换后图像的高。
  12. %这个最大值也是极坐标变换的极径
  13. radius=round(max([up_left up_right down_left down_right]));
  14. re = zeros(num,1);

  15. for i=0:1:radius          %纵坐标代表极径,不同情况不一样
  16.     for j=1:num       %横坐标代表极角,为3600
  17.         %oy,ox作为极坐标变换中心坐标,需要作为偏移量相加
  18.         ind = j/10;
  19.         h=round(oy+i*sin(ind*pi/180));
  20.         w=round(ox+i*cos(ind*pi/180));
  21.         
  22.         if h>0 && w> 0&& h<=m && w<=n       %超出原图像的像素忽略
  23.             re(j)= re(j) +double(img(h,w));
  24.         end
  25.     end
  26. end
  27. re = re/sum(re);
  28. end
复制代码


0

主题

424

金钱

1437

积分

初级用户

发表于 2019-12-9 14:22:09 | 显示全部楼层
感谢,万分感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表