OpenCV2:初中篇 图像平滑技术-图像采样
一.简介
图像变换上的采样就是将图像分辨率改变的过程
采样分为上采样和下采样,上采样是指将图像分辨率扩大,下采样是指将图像分辨率缩小
二.最近邻插值
最近邻插值是最简单的图像缩放处理方法,其原理是提取源数据图像中与其邻域最近像素值来作为目标图像相对应点的像素值
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; // 实现最近邻插值图像缩放 cv::Mat Interpolation(cv::Mat srcImage) { // 判断输入有效性 CV_Assert(srcImage.data != NULL); int rows = srcImage.rows; int cols = srcImage.cols; // 构建目标图像 cv::Mat dstImage = cv::Mat(cv::Size(150, 150), srcImage.type(), cv::Scalar::all(0)); int dstRows = dstImage.rows; int dstCols = dstImage.cols; // 坐标转换,求取缩放倍数 float cx = (float)cols / dstCols; float ry = (float)rows / dstRows; std::cout << "cv: " << cx << "ry:" << ry <<std::endl; // 遍历图像,完成缩放操作 for (int i = 0; i < dstCols; i++) { // 取整,获取目标图像在源图像对应坐标 int ix = cvFloor(i * cx); for (int j = 0; j < dstRows; j++) { int jy = cvFloor(j * ry); // 边界处理,防止指针越界 if (ix > cols - 1) ix = cols -1; if (jy > rows - 1) jy = rows - 1; // 映射矩阵 dstImage.at<cv::Vec3b>(j, i) = srcImage.at<cv::Vec3b>(jy, ix); } } return dstImage; } int main() { // 图像源读取及验证 cv::Mat srcImage = cv::imread("a.jpg"); if (!srcImage.data) return -1; // 最近邻插值缩放操作 cv::Mat dstImage = Interpolation(srcImage); cv::imshow("srcImage", srcImage); cv::imshow("dstImage", dstImage); cv::waitKey(0); return 0; }
三.双线性插值
双线性插值处理是应用最广泛的图像缩放方法之一,其稳定性高且时间复杂度较优
四.插值操作性能对比
五.图像金字塔
图像金字塔是一系列图像的集合,所有多个分辨率的图像来源于同一原始图像,常用于图像缩放或图像分割中.
图像金字塔结构(Pyramid)适用于多分辨率处理的一种图像存储数据结构,向下采样技术的是高斯金字塔,向上重建技术的是拉普拉斯金字塔
1.高斯金字塔
高斯金字塔的生成过程包含高斯核卷积和下采样过程,
2.拉普拉斯金字塔
拉普拉斯金字塔操作实现是向上重建图像
3.实现
OpenCV提供了 pyrUp() 和 pyrDown() 函数用于向上和向下采样
分类:
OpenCV2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)