C++双线性插值-片段
代码不能直接使用。
for (int j = strRY; j<endRY; ++j)
{
float * pR = result.ptr<float>(j); for (int i = strRX; i < endRX; ++i)
{
// To make sure z value;
float z(FLOAT32_MIN);
int i_(i - pOffset.x), j_(j - pOffset.y); float x = m_mapX.at<float>(j - strRY, i - strRY);
float y = m_mapY.at<float>(j - strRY, i - strRY); // whether out of range.
if (x < 0 || x >= src2.cols || y < 0 || y >= src2.rows)
continue; int lRow = static_cast<int>(y);
int nRow = lRow + 1; int lCol = static_cast<int>(x);
int nCol = lCol + 1; double u = y - lRow;
double v = x - lCol; // interpolation
// right bottom.
if (lRow >= src2.rows - 1 && lCol >= src2.cols - 1)
{
float data = m_mapZ.at<float>(lRow, lCol);
if (data == -1.0e6)
continue; z = (1 - u) * (1 - v) * data;
}
else if (lRow >= src2.rows - 1)//last row
{
float data = m_mapZ.at<float>(lRow, lCol);
float data2 = m_mapZ.at<float>(lRow, nCol);
if (data == -1.0e6 || data2 == -1.0e6)
continue; z = (1 - u) * (1 - v) * data +
(1 - u) * v * data2;
}
else if (lCol >= src2.cols - 1)//last col
{
float data = m_mapZ.at<float>(lRow, lCol);
float data3 = m_mapZ.at<float>(nRow, lCol); if (data == -1.0e6 || data3 == -1.0e6)
continue;
z = (1 - u) * (1 - v) * data + u * (1 - v) * data3;
}
else
{
float data = m_mapZ.at<float>(lRow, lCol);
float data2 = m_mapZ.at<float>(lRow, nCol);
float data3 = m_mapZ.at<float>(nRow, lCol);
float data4 = m_mapZ.at<float>(nRow, nCol);
if (data == -1.0e6 || data2 == -1.0e6 || data3 == -1.0e6 || data4 == -1.0e6)
continue; z = (1 - u) * (1 - v) * data + (1 - u) * v * data2 +
u * (1 - v) * data3 + u * v * data4;
} pR[i] = pR[i] == -1.0e6 ? z : 0.5*(pR[i] + z); }
}
C++双线性插值-片段的更多相关文章
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- 20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)
一.字段名与属性名(数据库的名字)不一样怎么办? 方案一:在小配置中配置一个resultMapper <!--方案一:resultMapper 字段名与属性名不一致 --> <res ...
- PAT 1049. 数列的片段和(20)
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1 ...
- sublimetext3中保存代码片段
在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累."蓝瘦"(难受)."香菇"(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在 ...
- 线性插值&双线性插值&三线性插值
http://www.cnblogs.com/yingying0907/archive/2012/11/21/2780092.html 內插是数学领域数值分析中的通过已知的离散数据求未知数据的过程或方 ...
- Code Snippets 代码片段
Code Snippets 代码片段 1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...
- 10个 jQuery 代码片段,可以帮你快速开发。
转载自:http://mp.weixin.qq.com/s/mMstI10vqwu8PvUwlLborw 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而 ...
- 深入理解DOM节点类型第四篇——文档片段节点DocumentFragment
× 目录 [1]特征 [2]作用 前面的话 在所有节点类型中,只有文档片段节点DocumentFragment在文档中没有对应的标记.DOM规定文档片段(document fragment)是一种“轻 ...
随机推荐
- NOIP2018普及组复赛游记
2018年11月10日,NOIP2018普及组复赛. 这是我初中阶段最后一次复赛了. 和往常一样,我们在预定的早上7点,没有出发. 10分钟之后,人终于到齐了,于是出发了,一路无话. 到了南航,合照三 ...
- vue2.x 监听数据变化 ---- watch
computed: { //需要监听的数据 loginToken () { return this.$store.state.userinfo.status; } }, watch: { loginT ...
- webapi使用ExceptionFilterAttribute过滤器
文章 public class ApiExceptionFilterAttribute:ExceptionFilterAttribute { public override void OnExcept ...
- hdu6468 dfs剪枝 or char数组 or 构造
http://acm.hdu.edu.cn/showproblem.php?pid=6468 题意 有一个序列,是1到n的一种排列,排列的顺序是字典序小的在前,那么第k个数字是什么?(\(1 \leq ...
- 洛谷P2508 [HAOI2008]圆上的整点
题目描述 求一个给定的圆$ (x^2+y^2=r^2) $,在圆周上有多少个点的坐标是整数. 输入格式 \(r\) 输出格式 整点个数 输入输出样例 输入 4 输出 4 说明/提示 \(n\le 20 ...
- python-3-条件判断练习题
前言 我们在前面两章学习了基础数据类型与条件判断语句,今天我们来做下练习题.如果你有不一样的解题思路在评论区亮出你的宝剑!!! 一.习题如下: 1.使用 while 循环输出 1 2 3 4 5 6 ...
- Python 多进程池
def get_html(n): time.sleep(n) print("sub_progress success") return n # 多进程池 pool = multip ...
- jvm的组成入门
JVM的组成分为整体组成部分和运行时数据区组成部分. JVM的整体组成 JVM的整体组成可以分为4个部分:类加载器(Classloader).运行时数据区(Runtime Data Area).执行引 ...
- GitHub中文社区
今天在打开GitHub的时候,使用了bing.com搜索,输入GitHub进行搜索链接,排名第一的为GitHub中文社区,点击去发现这个社区还可以,我们看看GitHub中文社区有哪些好的地方 GitH ...
- [基础] - 从xx语言是跨平台的说起
我经常碰到一些人在说xx语言跨平台而yy语言不是(为避免不必要的纷争,在此不写具体语言但不影响阅读),从而来表明自己使用xx语言进行程序开发进而在编程语言鄙视链上高高在上很有优越感. 大概是从Java ...