图像旋转插值的问题

今天解决了图像旋转插值的问题,还是很开心的,虽然遇到了很多麻烦,最后感觉还是值得的。:)

先截图,有时间再补充。

主要就是坐标系的转换、亚像素点的坐标、线性插值 、旋转角度计算的公式、角度的正负、相对坐标、atan和atan2反正切回来角度的范围。

用亚像素点的像素对周围4个像素进行插值:

旋转之后,总有些点是没有值的,后来发现是坐标计算的方向反了,应该根据目标图像的坐标去找原图像中的亚像素点,然后插值,

这样一来在目标图像的每个像素点上就都有值了:

时间: 2024-10-01 04:38:08

图像旋转插值的问题的相关文章

图像旋转的原理与实现

图像旋转的原理与实现 一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度.旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像.图像的旋转变换也可以用矩阵变换来表示.设点逆时针旋转角后的对应点为.那么,旋转前后点.的坐标分别是:                           (3-6)   (3-7) 写成矩阵表达式为             (3-8) 其逆运算为             (3-9)

2维图像旋转(转)

图像旋转的原理与实现 一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度.旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像.图像的旋转变换也可以用矩阵变换来表示.设点逆时针旋转角后的对应点为.那么,旋转前后点.的坐标分别是:                           (3-6)   (3-7) 写成矩阵表达式为             (3-8) 其逆运算为             (3-9)

每日算法之三十七:Rotate Image (图像旋转)

You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 原地图像顺时针旋转90度.因为要求空间复杂度是常数,因此应该迭代旋转操作. class Solution { public: void rotate(vector<vector<int> > &mat

opencv-从图像旋转学习Mat数据访问

先看一个简单的例子 代码: // ConsoleApplication3_6_23.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace std; using namespace c

使用OpenCL+OpenCV实现图像旋转(一)

[题外话]近期申请了一个微信公众号:平凡程式人生.有兴趣的朋友可以关注,那里将会涉及更多更新OpenCL+OpenCV以及图像处理方面的文章. 最近在学习<OPENCL异构计算>,其中有一个实例是使用OpenCL实现图像旋转.这个实例中并没有涉及读取.保存.显示图像等操作,其中也存在一些小bug.在学习OpenCL之初,完整地实现这个实例还是很有意义的事情. 1.图像旋转原理 所谓图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程.这个点通常就是图像的中心. 由于是按照中心旋

图像旋转的原理

图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程.当然这个点通常就是图像的中心.既然是按照中心旋转,自然会有这样一个属性:旋转前和旋转后的点离中心的位置不变. 根据这个属性,我们可以得到旋转后的点的坐标与原坐标的对应关系.由于原图像的坐标是以左上角为原点的,所以我们先把坐标转换为以图像中心为原点.假设原图像的宽为w,高为h,(x0,y0)为原坐标内的一点,转换坐标后的点为(x1,y1).那么不难得到: x1 = x0 - w/2; y1 = -y0 + h/2; 在新的坐标系

【OpenCV】图像旋转详解,边缘用黑色填充

项目要用到图像旋转,OpenCV里面居然没有专门封装好的函数,只好自己写了.根据<learnning OpenCV>发现效果不是很理想,旋转后图像大小不变,可是图像却被裁减了. 例子如下: int main( int argc, char** argv ) { IplImage* src=cvLoadImage("C:\\Users\\Liu\\Desktop\\bridge.bmp",1); IplImage* dst = cvCloneImage( src ); int

用OpenCV实现Photoshop算法(一): 图像旋转

最近学习了OpenCV,于是想用它实现Photoshop的主要功能,用于照片处理. 对于一张照片,PS的一般处理步骤包括: 1, 旋转图片,校正位置. 2,剪切,调整大小,重新构图. 3,调整色阶.曲线,使图片曝光正确.对比适中. 4,调整对比度.饱和度 5,印章去掉不想要的东西,液化调整形体线条 6,对于人像图片,美肤.美白 7, 用色彩平衡.可选颜色等调整色调,形成照片调性 8,加一些光效 9,锐化 以后的一系列博文将采用OpenCV逐一实现Photoshop的算法和功能, 并用计算机视觉人

图像旋转算法

图像旋转是指把定义的图像绕某一点以逆时针或顺时针方向旋转一定的角度,通常是指绕图像的中心以逆时针方向旋转. 假设图像的左上角为(left, top),右下角为(right, bottom),则图像上任意点(x0, y0)绕其中心(xcenter, ycenter)顺时针旋转θ角度后,新的坐标位置(x′, y′)的计算公式为: xcenter = (right - left + 1) / 2 + left;ycenter = (bottom - top + 1) / 2 + top;x′ = (x