柱面投影

2024-05-14 21:48
文章标签 投影 柱面

本文主要是介绍柱面投影,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做全景拼接时需要将图像统一到一个视角里,常用的柱面投影,其基本原理及公式如下(原文)。


【Octave】柱面投影简析

========================我是分割线==========================

在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要做一定的预处理,可以是球面投影,柱面投影等。

如果仅仅是做水平方向的拼接,则做柱状投影就好了

一. 原理

  把平面图像投影到圆柱的曲面上。

  如下图,四边形GHEF表示待处理原图,投影之后,变成曲面JDILCK(黄色点标注)

  

  俯视图如下,DCE为待处理图像平面,FCG为投影所得曲面。

    

      

   设,原图像宽W,高H,角度FOG为相机视场角度α(一般为45°,即PI/4),圆形半径(焦距)f 有tan 1/2α = W / (2 * f), 则有f = W / (2 * tan(α/2))

      依次推算出,目标图像的宽(曲线FCG长)W‘ = f * α, 目标图像高H’不变, H‘ = H

     第一种推算:以图像像素原始坐标计算(即,左上角为原点)

   

     公式如下:

   

   第二种推算:设置图像原点为(W/2, H/2),用以简化计算步骤

  

二. Octave实现

  

复制代码
I = imread('images/doge.bmp');
[height, width, depth] = size(I);
A = I;
centerX = width / 2;
centerY = height / 2;
% alpha = pi / 4;
f = width / (2 * tan(pi/4/2));
for i = 1 : width,for j = 1 : height,theta = asin((i - centerX) / f);pointX = int32(f * tan((i - centerX) / f) + centerX);pointY = int32((j - centerY) / cos(theta) + centerY);for k = 1 : depth,if pointX >= 1 && pointX <= width && pointY >= 1 && pointY <= height,A(j, i, k) = I(pointY, pointX, k);elseA(j, i, k) = 0;end;end;end;
end;
subplot(1, 2, 1);
imshow(I);
subplot(1, 2, 2);
imshow(A);
复制代码

 

三. 效果










这篇关于柱面投影的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989947

相关文章

box-shadow投影

格式 box-shadow: h-shadow v-shadow blur spread color inset; 比如 box-shadow:10px 10px  20px  5px  block;    //前两个值可以为负值,表示向上或向左 当需要四周阴影时,前两个值都设为0 0即可。

展览中的投影墙互动有哪些新玩法?

随着投影技术的飞速发展,它已经突破了传统场地、面积和形式的限制,为各类展示场景带来了前所未有的新颖投影形式。这些投影案例中,不乏一些在不规则墙面、独特物品外观上精彩呈现的典范。这些结合投影技术与互动技术的展示形式,不仅令观众眼前一亮,更为他们带来了更加生动、有趣且沉浸式的体验。今天,就让我们一起深入探索投影互动墙在展览展示中的几种令人惊艳的创意形式吧! 一、墙面互动投影游戏 墙面互动投影与

utm投影

一 概述      UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的。虽然我们仍然将其看作与“高斯-克吕格”相似的坐标系统,但实际上UTM采用了网格的分带(或分块)。除在美国本土采用Clarke 1866椭球体以外,UTM在世界其他地方都采用WGS84。 UTM是由美国制定,因此起始分带并不在本初子午线,而是在180度,因而所有美国本土都处

SQL-查询结果显示-投影、去重、重命名、排序

一、数据查询 1、数据查询是指根据用户需求从数据库中提取数据并将查询结果显示出来,SQL语言中的SELECT语句可以完成数据查询 2、完整的数据查询语句的格式: SELECT 【ALL|DISTINCT】<目标列表达式1>【,<目标列表达式2>,...】 FROM <表名或视图名1>【,<表名或视图名2>,...】 【WHERE <元组选择条件表达式>】 【GROUP BY <属性列名

PawSQL优化 | 分页查询太慢?别忘了投影下推

​在进行数据库应用开发中,分页查询是一项非常常见而又至关重要的任务。但你是否曾因为需要获取总记录数的性能而感到头疼?现在,让PawSQL的投影下推优化来帮你轻松解决这一问题!本文以TPCH的Q12为案例进行验证,经过PawSQL的优化后性能提升6000多倍! 分页查询的痛点 在进行分页查询时,我们通常需要获取总记录数以计算总页数。绝大多少程序员会在原查询上添加count(1)或count(*)

【地理坐标系、大地坐标系与地图投影与重投影详解】

原博文: 地理坐标系、大地坐标系与地图投影与重投影详解 基本概念 首先简单介绍一下地理坐标系、大地坐标系以及地图投影的概念: 地理坐标系:为球面坐标。 参考平面地是椭球面,坐标单位:经纬度;投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等;地理坐标转换到投影坐标的过程可理解为投影。(投影:将不规则的地球曲面转换为平面) 从以上三个概念相应到可以涉及到三个问题: 地理坐标

【光谱特征选择】连续投影算法SPA(含python代码)

目录 一、背景 二、代码实现 三、项目代码 一、背景 连续投影算法(Successive Projection Algorithm,SPA)是一种用于光谱分离的简单且有效的算法。它主要应用于高光谱图像处理,用于提取混合光谱数据中的端元(endmembers)。端元是指在高光谱图像中存在的纯物质的光谱签名,这些签名在混合像元的光谱数据中有重要的影响。 SPA的基本原理是通过迭代过

Maya: 菜单 编辑曲线 投影切线

编辑曲线 >投影切线 可以改变曲线端点处的切线方向,使其与两条相交曲线或与一条曲面的切线方向保持一致。

第三章 线性判别 -基于(二维向量投影)

完整代码如下: import numpy as npimport matplotlib.pyplot as pltnp.random.seed(150)x1 = np.random.normal(7, 1, [20, 1])x2 = np.random.normal(7, 1, [20, 1])C0 = np.concatenate((x1, x2), axis=1).T

第三章 线性判别 -二维向量投影

计算二维平面上的点到某向量w上的投影点。 import numpy as npimport matplotlib.pyplot as pltx1=np.random.normal(7,1,[20,1])x2=np.random.normal(7,1,[20,1])C0=np.concatenate((x1,x2),axis=1).T #C0类x1=np.random.norm