1、调用opencv的API

pyrUp(src, dst, Size(src.cols * 2, src.rows * 2)); 

pyrUp:API详解

这里的up是指将图像的尺寸变大,所以原始图像位于图像金字塔的顶层。

首先将当前层图像的宽高扩大2倍,插入的行和列位于偶数行或偶数列,这些位置填充数值0;然后用和pyrDown一样的kernel和当前层的图像卷积,填充到刚才插入的行列中。

接口形式:

cv2.pyrUp(src[, dst[, dstsize[, borderType]]]) ->dst
  • 参数含义:
  • src:源图像;
  • dst:目标图像;
  • dstsize:缩放后目标图像的尺寸,必须满足std::abs(dsize.width – ssize.width*2) == dsize.width % 2 && std::abs(dsize.height – ssize.height*2) == dsize.height % 2
  • borderType:边界填充类型;

2、源码实现

先对图像进行升采样(将图像尺寸行和列方向增大一倍),然后再进行高斯平滑;

Mat UpSample(Mat src)
{Mat dst;if (src.channels() != 1)return src;dst.create(src.rows * 2, src.cols * 2, src.type());//cout << "-- " << dst.rows << " " << dst.cols << " --" << endl;int m = 0, n = 0;for (int i = 0; i < dst.rows-2; i += 2, m++){n = 0;for (int j = 0; j < dst.cols-2; j += 2, n++){//需要防止地址越界pixel_t sample = *(src.data + src.step[0] * m + src.step[1] * n);*(dst.data + dst.step[0] * i + dst.step[1] * j) = sample;pixel_t sample_x = (*(src.data + src.step[0] * m + src.step[1] * n) + *(src.data + src.step[0] * m + src.step[1] * (n+1)));*(dst.data + dst.step[0] * (i) + dst.step[1] * (j+1)) = sample_x/2;pixel_t sample_y = (*(src.data + src.step[0] * m + src.step[1] * n) + *(src.data + src.step[0] * (m+1)+ src.step[1] * (n)));*(dst.data + dst.step[0] * (i+1) + dst.step[1] * (j)) = sample_y/2;pixel_t sample_center = (*(src.data + src.step[0] * m + src.step[1] * n) +*(src.data + src.step[0] * (m + 1) + src.step[1] * (n)) +*(src.data + src.step[0] * (m + 1) + src.step[1] * (n + 1)) +*(src.data + src.step[0] * m + src.step[1] * (n + 1)));*(dst.data + dst.step[0] * (i + 1) + dst.step[1] * (j + 1)) = sample_center / 4;}}if (dst.rows < 3 || dst.cols < 3)return src;//最后两行两列for (int k = dst.rows-1; k >= 0; k--){*(dst.data + dst.step[0] * k + dst.step[1] * (dst.cols - 2)) = *(dst.data + dst.step[0] * k + dst.step[1] * (dst.cols - 3));*(dst.data + dst.step[0] * k + dst.step[1] * (dst.cols - 1)) = *(dst.data + dst.step[0] * k + dst.step[1] * (dst.cols - 3));}for (int k = dst.cols-1; k >= 0; k--){*(dst.data + dst.step[0] * (dst.rows - 2) + dst.step[1] * k) = *(dst.data + dst.step[0] * (dst.rows - 3) + dst.step[1] * k);*(dst.data + dst.step[0] * (dst.rows - 1) + dst.step[1] * k) = *(dst.data + dst.step[0] * (dst.rows - 3) + dst.step[1] * k);}dst = guassFilter(dst, 5, 1.05);return dst;
}

3、结果比较

(1)调用API

(2)源码实现

opencv线性插值(上采样)相关推荐

  1. OpenCV 图像上采样和降采样

    文章目录 相关概念 图像金字塔 高斯金字塔 高斯金字塔的生成过程 高斯不同(Difference of Gaussian-DOG): 拉普拉斯金字塔 采样相关API 上采样(cv::pyrUp) – ...

  2. opencv python 图像测试上采样(升采样)(cv2.pyrUp()) 下采样(cv2.pyrDown()) 池化 滑动窗口(BorderTypes)

    文章目录 `from cv2.__init__.py` 示例1:给图片执行两次下采样 示例2:给图片重复100次上下采样 在学习tensorflow卷积神经网络时,需要实现图像的下采样,于是便想手动实 ...

  3. opencv:用最邻近插值和双线性插值法实现上采样(放大图像)与下采样(缩小图像)

    上采样与下采样 概念: 上采样: 放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的 是放大原图像,从而可以显示在更高分辨率的显示设备上. 下采样: 缩 ...

  4. 线性插值改变图像尺寸_图像分割--gt;上采样的那些事

    在图像分割中,因为FCN的提出,上采样操作成为了分割中不可或缺的部分.上采样就是将提取到的feature map还原到原始分辨率大小的操作,但是这里要注意的是上采样不是下采样的逆过程,也就是说上采样输 ...

  5. opencv 的norm_OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG

    一. 图像金字塔 一个图像金字塔式一系列的图像组成,最底下的图形尺寸最大,最上方的图像尺寸最小. 高斯金字塔是从底向上,逐层降采样得到的. 高斯金字塔的生成过程分为两步: 1. 对当前层进行高斯模糊. ...

  6. 2020.11.03 使用OpenCV进行图像上采样、降采样以及高斯不同操作【OpenCV C++】

    图像上采样,降采样以及高斯不同操作 源代码: // testOpencv12.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include &l ...

  7. FCN全卷积网络—upsampling(上采样)——OpenCV图像金字塔

    一.上采样理论 1.1 bilinear 1.2 Deconvolution(反卷积) 1.3 unpooling 二.OpenCV金字塔:高斯金字塔.拉普拉斯金字塔与图片缩放 一.上采样理论 FCN ...

  8. opencv——上采样与降采样

    目录 图像金字塔 为什么要使用图像金字塔 上采样与降采样 高斯金字塔 高斯不同 拉普拉斯金字塔 相关API 上采样 降采样 上采样与降采样代码实现 代码 效果 先降采样再上采样代码实现 高斯不同代码实 ...

  9. OpenCv 金字塔之上采样与下采样

    常见两类图像金字塔 高斯金字塔 ( Gaussian pyramid): 用来向下/降采样,主要的图像金字塔 拉普拉斯金字塔(Laplacian pyramid): 用来从金字塔低层图像重建上层未采样 ...

最新文章

  1. Scala变量和常量
  2. 解决umount.nfs: /data: device is busy 问题
  3. 【记录】一些非常方便的命令集合
  4. GWT interface的使用例子
  5. ov5640帧率配置_赛博朋克2077 优化设置大全!帧数50暴涨100
  6. bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)
  7. (2021) 23 [持久化] I/O设备与驱动
  8. Airflow 中文文档:UI /截图
  9. 【机房收费系统】---如何引用Microsoft Excel xx.0 Object Library
  10. Asp.net 邮件传输
  11. 力扣题目——53. 最大子序和
  12. python 在线培训费用-python培训费需要多少钱?
  13. 【Django 2021年最新版教程25】模板语言 前端for循环怎么用 实例
  14. b700a怎么连蓝牙_233621蓝牙21无线音箱B700A小测
  15. Jetson nano (4GB B01) 系统安装,官方Demo测试 (目标检测、手势识别)
  16. Flutter 实现安卓原生系统级悬浮窗
  17. WEBERP测试实录:一 webERP安装
  18. 亿级流量电商详情页系统设计与实战-小型电商架构VS大型电商架构
  19. 解决flask框架本地代码已经刷新,但是端口内容不变的问题
  20. 申宝投资-指数上周五中阴杀跌

热门文章

  1. 20190226-利用序列化完成小型记账程序
  2. linux epoll用法
  3. 中国互联网+光通信器件行业商业模式创新与投资机会深度研究报告
  4. Ubuntu VSCode OpenCV 环境配置
  5. 算法(第四版)C# 习题题解——1.3
  6. 【Opencv】直方图函数 calchist()
  7. 为选择屏幕的字段设置F4帮助
  8. hdu 5438 Ponds 拓扑排序
  9. 技术人生:本周改进计划
  10. Calling Oracle stored procedures from Microsoft.NET