opencv柱面投影,C语言实现

article/2025/9/27 4:21:47

在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要进行柱面投影,否则离中心图像距离越远的图像拼接后变形越大。

柱面投影公式为

在这里插入图片描述
这个是https://blog.csdn.net/zouxin_88/article/details/85167602的代码,rgb彩色的

int main()
{cv::Mat image1 = cv::imread("images/1.jpg", 1);if (!image1.data)return 0;imshow("image1", image1);Mat imgOut = Mat(image1.rows, image1.cols, CV_8UC3);float w = image1.cols;float h = image1.rows;float f = (w / 2) / atan(PI / 8);for (int i = 0; i < image1.rows; i++){for (int j = 0; j < image1.cols; j++){float x = j;float y = i;float x1 = f * atan((x - w / 2) / f) + f * atan(w / (2.0f * f));float y1 = f * (y - h / 2.0f) / sqrt((x - w / 2.0f) * (x - w / 2.0f) + f * f) + h / 2.0f;int col = (int)(x1 + 0.5f);//加0.5是为了四舍五入int row = (int)(y1 + 0.5f);//加0.5是为了四舍五入if (col < image1.cols && row < image1.rows){imgOut.at<Vec3b>(row, col)[0] = image1.at<Vec3b>(i, j)[0];imgOut.at<Vec3b>(row, col)[1] = image1.at<Vec3b>(i, j)[1];imgOut.at<Vec3b>(row, col)[2] = image1.at<Vec3b>(i, j)[2];}}}imshow("imgOut", imgOut);waitKey(0);return 0;
}

这是本人,改进,针对灰度图的

cv::Mat image1 = cv::imread("E:\\zcb_work\\2113\\pic2\\k.jpg", 0);if (!image1.data)return 0;imshow("image1", image1);cv::Mat image2 = cv::imread("E:\\zcb_work\\2113\\pic2\\j.jpg", 0);if (!image2.data)return 0;imshow("image2", image2);Mat imgOut1 = Mat(image1.rows, image1.cols, CV_8UC1);imgOut1.setTo(0);Mat imgOut2 = Mat(image2.rows, image2.cols, CV_8UC1);imgOut2.setTo(0);float w = image1.cols;float h = image1.rows;float f = (w / 2) / atan(PI / 8);for (int i = 0; i < image1.rows; i++){for (int j = 0; j < image1.cols; j++){float x = j;float y = i;float x1 = f * atan((x - w / 2) / f) + f * atan(w / (2.0f * f));float y1 = f * (y - h / 2.0f) / sqrt((x - w / 2.0f) * (x - w / 2.0f) + f * f) + h / 2.0f;int col = (int)(x1 + 0.5f);//加0.5是为了四舍五入int row = (int)(y1 + 0.5f);//加0.5是为了四舍五入if (col < image1.cols && row < image1.rows){imgOut1.at<uchar>(row, col) = image1.at<uchar>(i, j);imgOut2.at<uchar>(row, col) = image2.at<uchar>(i, j);//imgOut.at<Vec3b>(row, col)[1] = image1.at<Vec3b>(i, j)[1];//imgOut.at<Vec3b>(row, col)[2] = image1.at<Vec3b>(i, j)[2];}}}imshow("imgOut1", imgOut1);imshow("imgOut2", imgOut2);

原图
在这里插入图片描述
柱面投影
在这里插入图片描述
用surf算法,特征检测,
在这里插入图片描述
合成这样,呵呵呵,
在这里插入图片描述


http://chatgpt.dhexx.cn/article/KM7Rr64c.shtml

相关文章

柱面投影matlab程序

拼接之前要进行柱面、立方体面或者球面投影&#xff0c;《全景拼接的关键技术研究》选的是柱面投影&#xff0c;根据其理论有&#xff1a; %假设相机市场角为45度 %反投影到柱面时左右有缝隙了 Aimread(F:\fisheye\kk.jpg); [H,W,k]size(A); fW/(2*tan(pi/4/2)); %视场角越…

柱面投影、拼接视差、球面投影

1. 图像拼接传统做法: 特征点提取:sift、surf、orb等特征点提取; 基于特征点的配准:RANSAC方法剔除匹配点并拟合图像变换矩阵(全局单应性矩阵); 图像融合:先确定缝合线,再利用加权融合、多频带融合的方法融合; 方法:除了按照上文提到的顺序利用opencv进行拼接,还可以…

opencv柱面投影

在做全景拼接的时候&#xff0c;为了保持图片中的空间约束与视觉的一致性&#xff0c;需要进行柱面投影&#xff0c;否则离中心图像距离越远的图像拼接后变形越大。 柱面投影公式为 变换效果如下&#xff1a; int main() {cv::Mat image1 cv::imread("images/1.jpg"…

图片柱面投影简单实现

转自&#xff1a;https://blog.csdn.net/u010551600/article/details/78461142 柱面投影是图片拼接的前期的一部分工作&#xff0c;以下代码只是简单的实现了投影&#xff0c;还可以优化&#xff0c; 柱面半径设置位图片宽度的一半&#xff0c;即 R width/2 代码运算流程是…

柱面投影

做全景拼接时需要将图像统一到一个视角里&#xff0c;常用的柱面投影&#xff0c;其基本原理及公式如下&#xff08;原文&#xff09;。 【Octave】柱面投影简析 我是分割线 在做全景拼接的时候&#xff0c;为了保持图片中的空间约束与视觉的一致性&#xff0c;需要做一定的预…

图像柱面投影

由于图像序列是实体景物在不同坐标系下的二维投影&#xff0c;直接对拍摄图像进行拼接无法满足视觉一致性&#xff0c;所以需要将待拼接的图像分别投影到一个标准的坐标系下&#xff0c;然后再进行图像的拼接。全景图生成系统可以采用圆柱体、立方体和球体等模型来实现。由于柱…

柱面投影介绍与python实现(一)

简介 本文主要介绍柱面投影变换,将这种变换用于图像处理,可以产生图像扭曲的效果,如下图所示,产生了将平面图像投影到了柱面上的视觉效果。博客最后给出了柱面投影的python实现,供读者参考。 数学原理 如下图所示,矩形GHEF为待处理的原图,投影到柱面上之后则变成了…

【Octave】柱面投影简析

我是分割线 在做全景拼接的时候&#xff0c;为了保持图片中的空间约束与视觉的一致性&#xff0c;需要做一定的预处理&#xff0c;可以是球面投影&#xff0c;柱面投影等。 如果仅仅是做水平方向的拼接&#xff0c;则做柱状投影就好了 一. 原理 把平面图像投影到圆柱的曲面上。…

拖库 洗库 撞库

间接转载地址: http://blog.csdn.net/daliaojie/article/details/42171177 一,背景: 用户数据泄露一直是如今互联网世界的一个焦点,从最近的京东撞库抹黑事件,到之前的CSDN,如家用户数据的泄露,服务商和黑客之间在用户数据这个舞台上一直在进行着旷日持久的攻防战。 对于…

分享一个验证码暴力撞库漏洞的案例

记录一个验证码暴力破解的案例&#xff0c;安全问题不容忽视呀。 某公司接到用户反馈&#xff0c;应用存在安全漏洞&#xff0c;通过技术手段可以在无手机情况下&#xff0c;获取验证码&#xff0c;直接修改密码成功。如果用户密码被他人修改成功&#xff0c;直接涉及到资产损…

深入浅出了解撞库攻击!

1. 撞库的原理和危害 “撞库”&#xff08;Credential Stuffing Attack&#xff09;在网络安全中是一个古老的概念&#xff0c;按中文的字面意思解读&#xff0c;就是“碰撞数据库”的意思。“碰撞”意味着碰运气&#xff0c;即不一定能成功&#xff1b;而“数据库”中往往存储…

使用 Burp Suite 暴力破解密码 撞库攻击 从0到1手摸手教学

说明 一个学习的过程 增加自己网络安全知识 切勿用于违法用途 设置密码尽量使用6位以上并规避简单数字组合、加强对同一ip的频繁访问次数限制、设置人机验证减小撞库攻击的危害 用到的工具&环境 本地环境 kali 2022 Burp Suite FireFox 靶机环境 一台服务器 CentO…

【htpwdScan 是一个HTTP暴力破解、撞库测试工具。】

htpwdScan 1.0 htpwdScan 是一个HTTP暴力破解、撞库测试工具。 安装 要求 python3.6 pip3 install requirements.txt特性 支持常见的认证模式&#xff1a;Basic/Digest/NTLM 等 支持对 GET / POST 参数进行暴力破解&#xff0c;支持使用占位符选定参数或参数的一部分 支持批…

MD5碰撞与撞库和题

MD5 相同的情况叫做“碰撞”&#xff0c;现在网络中已经出现了两个相同的 MD5 可执行文件&#xff0c;所以MD5现在已经被弃用了&#xff0c;发生碰撞的概率是1/&#xff08;2^128&#xff09;。 SHA-1 也会发生碰撞&#xff0c;但是几率比 MD5 小的多。 2004年&#xff0c;我…

拖库 洗库 撞库的概念

一&#xff0c;背景&#xff1a; 用户数据泄露一直是如今互联网世界的一个焦点&#xff0c;从最近的京东撞库抹黑事件&#xff0c;到之前的CSDN&#xff0c;如家用户数据的泄露&#xff0c;服务商和黑客之间在用户数据这个舞台上一直在进行着旷日持久的攻防战。 对于大多数用…

(云安全)拖库-洗库-撞库

一&#xff0c;背景&#xff1a; 用户数据泄露一直是如今互联网世界的一个焦点&#xff0c;从最近的京东撞库抹黑事件&#xff0c;到之前的CSDN&#xff0c;如家用户数据的泄露&#xff0c;服务商和黑客之间在用户数据这个舞台上一直在进行着旷日持久的攻防战。 对于大多数用户…

java解决撞库的问题_Web安全开发之验证码设计不当引发的撞库问题

感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复。以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题&#xff0c;甚至在一些银行或者电商的登录与查存页面同样存在这个问题&#xff0c;一旦造成撞库无论对用户账号的安全性还是网站的负载都是巨大的挑…

什么是撞库攻击,如何预防撞库攻击?

1. 撞库的原理和危害 “撞库”&#xff08;Credential Stuffing Attack&#xff09;在网络安全中是一个古老的概念&#xff0c;按中文的字面意思解读&#xff0c;就是“碰撞数据库”的意思。“碰撞”意味着碰运气&#xff0c;即不一定能成功&#xff1b;而“数据库”中往往存储…

撞库详解

撞库攻击是如今最常见的攻击&#xff0c;给企业带来巨大威胁。撞库带来的威胁往往不是直接的&#xff0c;但是由此造成的信息泄露以及进一步的渗透与攻击会更为严重。Akamai的报告显示&#xff0c;2018年五月到十二月期间&#xff0c;共发生了约280亿次撞库攻击&#xff0c;其中…

mysql暴力撞库与弱密码检测

暴力撞库与弱密码检测 最近在生产数据库上碰到了一个问题&#xff0c;觉得挺有意思&#xff0c;总结出来和大家分享下。 关于暴力撞库和弱密码检测。 相信使用数据库的大家应该都不陌生&#xff0c;暴力撞库&#xff0c;简单通俗的讲通过一堆生成的密码&#xff0c;然后用默认…