鱼眼图像畸变校正——透视变换
生活随笔
收集整理的這篇文章主要介紹了
鱼眼图像畸变校正——透视变换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉自:【opencv】魚眼圖像畸變校正——透視變換 ?
http://m.blog.csdn.net/article/details?id=50786782
原圖
球面透視投影(以空間左手坐標系,x軸為水平,y為豎直,z為光軸,投影面法線與xoz面夾角55度)
經過球面透視投影后,會存在兩個滅點,此時,需要消去由于球面透視投影面存在角度引入的滅點。在這里采用opencv的仿射變換。
選取兩條直線上的四個點,這兩條直線相交與要消除的滅點。給出四個點校正后的位置。求變換矩陣。
透視變換
透視變換代碼 opencv2.4.9+vs2012
int main(int argc,char** argv) {CvPoint2D32f pts_src[4], pts_dst[4];CvMat *warp_matrix;IplImage *src, *dst;int offset_x, offset_y;src = cvLoadImage("correct_Img_1.jpg",1);dst = cvCreateImage( cvGetSize(src), src->depth, src->nChannels);//映射關系 (310,281)->(300,200) (193,14)->(300,50) (928,14)->(800,50) (744,281)->(800,200)offset_x = 100;//為正,橫向拉伸,為負,橫向壓縮offset_y = 0;//為正,縱向拉伸,為負,縱向壓縮pts_src[0].x = 310;pts_src[0].y = 281;pts_src[1].x = 193;pts_src[1].y = 14;pts_src[2].x = 928;pts_src[2].y = 14;pts_src[3].x = 744;pts_src[3].y = 281;pts_dst[0].x = 300-offset_x;pts_dst[0].y = 200+offset_y;pts_dst[1].x = 300-offset_x;pts_dst[1].y = 50-offset_y;pts_dst[2].x = 800+offset_x;pts_dst[2].y = 50-offset_y;pts_dst[3].x = 800+offset_x;pts_dst[3].y = 200+offset_y;warp_matrix = cvCreateMat(3,3,CV_32FC1);//計算變換矩陣cvGetPerspectiveTransform( pts_src, pts_dst ,warp_matrix);//透視變換cvWarpPerspective( src, dst ,warp_matrix);cvNamedWindow("dst",1);cvShowImage("dst",dst);cvSaveImage("out.jpg",dst);cvWaitKey(0);cvReleaseImage(&dst);cvDestroyWindow("dst");return 0;
總結
以上是生活随笔為你收集整理的鱼眼图像畸变校正——透视变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio开发环境下的中
- 下一篇: 采购计算机申请,采购申请报告格式