opencv图像归一化zscore_normalize
- opencv_图像归一化
#include <cv.h>
#include <highgui.h>void zscoreNormalize(const cv::Mat& src, cv::Mat& dst)
{// compute mu and mu squaredcv::Mat mu(src.size(), src.type());cv::GaussianBlur(src, mu, cv::Size(7, 7), 1.166);cv::Mat mu_sq;cv::multiply(mu, mu, mu_sq);// compute sigma (local sigma)cv::Mat sigma(src.size(), src.type());cv::multiply(src, src, sigma);cv::GaussianBlur(sigma, sigma, cv::Size(7, 7), 1.166);cv::subtract(sigma, mu_sq, sigma);cv::pow(sigma, double(0.5), sigma);cv::add(sigma, cv::Scalar(1.0 / 255), sigma);cv::subtract(src, mu, dst);cv::divide(dst, sigma, dst);
}void zscoreNormalize_v2(const cv::Mat& src, cv::Mat& dst)
{cv::Mat mu(src.size(), src.type());cv::GaussianBlur(src, mu, cv::Size(7, 7), 1.166);cv::subtract(src, mu, mu);cv::Mat sigma(src.size(), src.type());cv::multiply(mu, mu, sigma);cv::GaussianBlur(sigma, sigma, cv::Size(7, 7), 1.166);cv::pow(sigma, 0.5, sigma);cv::add(sigma, cv::Scalar(1.0 / 255), sigma);cv::divide(mu, sigma, dst);
}template<typename Func>
double bench_(const Func& func, unsigned int iterNum = 1)
{auto t1 = cv::getTickCount();while (iterNum--) func();auto t2 = cv::getTickCount();return 1000.0 * (t2 - t1) / cv::getTickFrequency();
}void show(const std::string& winname, const cv::Mat& src)
{cv::Mat normalized;cv::normalize(src, normalized, 255, 0, CV_MINMAX, CV_8U);cv::bitwise_not(normalized, normalized);cv::imshow(winname, normalized);
}int main()
{cv::Mat src = cv::imread("lena.jpg", 0);cv::Mat src64f;src.convertTo(src64f, CV_64F, 1.0 / 255);cv::Mat dst64f(src.size(), src.type());int iterNum = 10;printf("zscoreNormalize %f ms\n", bench_([&](){zscoreNormalize(src64f, dst64f); }, iterNum));show("zscoreNormalize", dst64f);printf("zscoreNormalize_v2 %f ms\n", bench_([&](){zscoreNormalize_v2(src64f, dst64f); }, iterNum));show("zscoreNormalize_v2", dst64f);cv::waitKey();return 0;
}
opencv图像归一化zscore_normalize相关推荐
- OpenCv图像处理之图像归一化
OpenCv图像处理之图像归一化 归一化 中心化 标准化 归一化 图像处理中,图像单通道像素值为0~255之间的uchar类型,通常使用min-max归一化将其转化为0~1区间之间,既不会改变数据的分 ...
- opencv图像修复
opencv图像修复 图像修复,一张利用原图,一张利用损坏位置的灰度图,进行图像修复,利用的是cv2.inpaint的函数. 原图: 滤波后的损坏位置的灰度图: 修复结果: 代码: import cv ...
- OpenCV图像梯度(Sobel和Scharr)
OpenCV图像梯度(Sobel和Scharr) 1 图像梯度是什么? 2 图像梯度的用途 3 图像梯度的使用 参考 这篇博客将介绍图像渐变以及如何使用OpenCV的cv2.Sobel计算Sobel渐 ...
- Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
Python,OpenCV图像金字塔cv2.pyrUp, cv2.pyrDown 1. 效果图 2. 原理 2.1 什么是图像金字塔 2.2 金字塔分类 2.3 应用 3. 源码 参考 这篇博客将介绍 ...
- OpenCV图像缩放插值之BiCubic双三次插值
图像缩放算法简介 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值(立体插值),兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中 ...
- python皮同_Python OpenCV 图像的双线性插值算法,全网最细致的算法说明_橡皮擦,一个逗趣的互联网高级网虫-CSDN博客...
原文作者:梦想橡皮擦 原文标题:Python OpenCV 图像的双线性插值算法,全网最细致的算法说明 发布时间:2021-02-17 20:55:32 Python OpenCV 365 天学习计划 ...
- OpenCV 图像加载和显示
OpenCV 图像加载和显示 OpenCV 图像加载和显示 加载图像(使用cv :: imread) 创建一个名为OpenCV的窗口(使用cv :: namedWindow) 在OpenCV窗口中显示 ...
- OpenCV图像坐标系与行列宽高的关系
这篇文章挺好 OpenCV图像坐标系与行列宽高的关系 图片坐标系,与从小到大见到的xy坐标系,x轴方向相同,只是y轴方向相反.
- python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)
python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录
最新文章
- java srs 推流_srs安装与ffmpeg推流
- java第五章抽象类与接口5.1-5.3 2020.3.27+31
- boost::safe_numerics模块实现相等的constexpr的测试程序
- 三角形带优化库nvtrisrip的使用
- 14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例
- Core Animation基础
- 最全面的智能锁领域常见的无线传输协议类型
- 自学编程这几点非常重要
- 《人月神话》读后感与读书笔记
- 2022年全球及中国MICC电缆行业运行战略规划与未来投资策略分析报告
- 2017美国数学建模ICM D题 优化机场安全的乘客吞吐量检查点(Optimizing the Passenger Throughput at an Airport Security Checkpo)
- LSTM+CNN模型厄尔尼诺事件预测
- 计算机求和怎样操作,电脑求和怎么操作
- cPanel主机自定义php.ini文件
- ORB-SLAM Spanning Tree 的作用
- 一文彻底学会CSS-3
- SAS9.4+sid更新
- 毕业设计-基于微信小程序的“掌上实验室” 安全教育与管理系统
- 你可能已经被运营商http劫持了
- [论文阅读](图像/视频质量评价系列)
热门文章
- 美国盐湖城郊区一购物中心发生枪击案 致2人受伤
- web网页设计实例作业 ——我的家乡-四川(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品
- javascript实现页面的重新加载和页面的刷新
- 2021年高教社杯全国大学生数学建模竞赛
- 如何用区块链防止学历造假?
- UML图:活动图详细介绍
- i.mx6 android4.4.3 recovery时不删除内部SD卡上的导航地图和媒体文件等
- iphone计算机怎么修改错误字体,终于能给iPhone修改字体了,无需越狱,仅限iOS12.4...
- 基于matlab的脉冲多普勒测距、测速、实现测速以及测距功能
- MySQL 快速构造一亿条记录的表