matlab练习程序(计算图像旋转角度)
比如有图像1,将其旋转n度得到图像2,问如何比较两张图像得到旋转的度数n。
算法思路参考logpolar变换:
1.从图像中心位置向四周引出射线。
2.计算每根射线所打到图像上的像素累计和,得到极坐标灰度曲线。
3.比较两张图的灰度曲线,得到最相关的偏移位置,即为两张图像的旋转角度。
原图:
旋转了10°的图像:
灰度曲线:
代码如下:
main.m
clear all;
close all;
clc; img1 = imread('lena.jpg');
img2 = imrotate(img1,); imshow(img1)
figure;
imshow(img2) re1 = getCurve(img1);
re2 = getCurve(img2); figure;
plot(re1);
hold on;
plot(re2); su=zeros(length(re1),);
for i=:length(re1)
tmp = circshift(re2,i);
su(i) =sum(tmp.*re1);
end [ma,ind] = max(su);
ind/
getCurve.m
function re = getCurve(img) [m,n]=size(img); oy=m/;
ox=n/; %求中心点到图像四个角的距离
up_left=sqrt((oy-)^+(ox-)^);
up_right=sqrt((oy-)^+(ox-n)^);
down_left=sqrt((oy-m)^+(ox-)^);
down_right=sqrt((oy-m)^+(ox-n)^); num=;
%求中心点距离四角距离的最大值,作为变换后图像的高。
%这个最大值也是极坐标变换的极径
radius=round(max([up_left up_right down_left down_right]));
re = zeros(num,); for i=::radius %纵坐标代表极径,不同情况不一样
for j=:num %横坐标代表极角,为3600
%oy,ox作为极坐标变换中心坐标,需要作为偏移量相加
ind = j/;
h=round(oy+i*sin(ind*pi/));
w=round(ox+i*cos(ind*pi/)); if h> && w> && h<=m && w<=n %超出原图像的像素忽略
re(j)= re(j) +double(img(h,w));
end
end
end
re = re/sum(re);
end
这里参考了我过去一篇博文:https://www.cnblogs.com/tiandsp/archive/2013/06/09/3129198.html
matlab练习程序(计算图像旋转角度)的更多相关文章
- matlab练习程序(图像球面化)
十一没什么事干,接着看图像算法. 这个球面化算法最初是在ps上的球面化滤镜中看到的,感觉挺有意思,就研究了一下. 算法的详细推导可以在这篇博客中找到,我比较懒,只在纸上推了一遍,就不在博客上编辑了. ...
- matlab练习程序(图像投影到点云)
最近接触点云比较多,如果把图像投影到点云应该挺有意思. 首先需要载入图像,然后做个球或其他什么形状的点云,这里可以参考球坐标公式. 最后通过pcshow将像素输出到点云上即可. 原图: 投影后的点云: ...
- matlab练习程序(图像马赛克)
处理原理就是将邻域像素平均值赋给邻域中的所有像素. 这里将处理方法分为了带线条和不带线条,带线条处理后的视觉效果要好些. 原图: 处理结果(不带线条): 处理结果(带线条): 代码处理的是带线条的情况 ...
- matlab之原始处理图像几何变换
(一)图像几何变换理论知识 (1)图像的平移与比例 图像的平移很简单,平移前后的坐标分别为(x,y)和(x',y'),则满足的关系式为 x'= x +Tx: y'= y +Ty: 其中Tx与Ty分别为 ...
- OpenCV2+入门系列(四):计算图像的直方图,平均灰度,灰度方差
本篇懒得排版,直接在网页html编辑器编辑 在图像处理时,我们常常需要求出图像的直方图.灰度平均值.灰度的方差,这里给出一个opencv2+自带程序,实现这些功能. 直方图 对于直方图,使用cv::c ...
- matlab练习程序(SUSAN检测)
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...
- (转)matlab练习程序(HOG方向梯度直方图)
matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...
- matlab练习程序(BRIEF描述子)
BRIEF特征全称:Binary Robust Independent Elementary Features.是一种能够快速计算图像特征描述符的方法,同样能够降低特征匹配的时间. 算法计算步骤如下: ...
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
[TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...
随机推荐
- 文本切换器(TextSwitcher)的功能与用法
TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果.与ImageSwitcher相似的是,使用TextSwit ...
- java开发实习生面试经历
这是我第一次写博客,以前都是查看别人的博客分享学习技术,转眼间我也成为其中一员.从一位初学者到现在的开发实习生,不断前进着,跟随时代的脚步在程序的海洋里漂泊,也意识到自己的各种不足,但我还年轻,头还 ...
- Django实现标签联动以及xadmin中实现标签联动
如图,即实现点击一个城市,出现对应的学校名称.开始一直以为是建立数据表的时候实现的,原来是通过ajax实现的. 思路:当get请求显示原始状态(即下拉框呈现全部内容).当点击一个城市后,通过ajax的 ...
- [Go] 轻量服务器框架基础TCP服务模块
框架要先把整体的结构定义好,一般都是在$GOPATH目录的src下建立自己的目录 zinterface是一些接口的定义 znet就是接口的具体实现 IServer.go package zinterf ...
- SpringBoot启动过程源码分析
学习博客:SpringBoot时序图分析启动过程
- MVC(实战二:网址映射)
一.默认网址 Global.asax 默认网址配置: 此时打开编辑页面,效果如下: ?后面包含name参数和Email参数 在Global中修改网址路由: public static void Re ...
- 磕磕绊绊中,使用Git工具完成代码上传
1.安装Git工具 1)下载并安装Git工具:Git下载地址 安装完成之后,在桌面空白处点击右键,会出现以下选项: 2.初始化环境 1) 在一文件夹中,点击右键,选择上图中的Git Bash Here ...
- Centos7下Redis设置开机自启动服务
有个同事说重启了服务器没有自启动redis,我看了一下,是以前手动编译安装的模式,没有配置开机启动的服务 这边做个笔记记录一下redis如何设置编译安装模式的开机自启动. 第一种方法: 1.编写red ...
- git commit vim报错
window平台,使用git bash,填写git commit时,退出时vim报错: 错误信息 启动失败 Vim: Caught deadly signal SEGV 在工程目录下,进.git目录, ...
- 国产处理器的逆袭机会——RISC-V
前言 今天天气阴沉,刚才又下起了小雨,温度骤降,前几天脱下的秋裤,今天又穿上了,这天气真是变化无常.上周六(4.20)参加了一场关于RSIC-V的技术沙龙,第一次真正了解了RISC-V架构,正好今天不 ...