Normalize
发布日期:2022-01-31 02:37:33
浏览次数:47
分类:技术文章
本文共 2215 字,大约阅读时间需要 7 分钟。
Normalize 根据某种范数或者数值范围归一化数组. void cvNormalize( const CvArr* src, CvArr* dst, double a=1, double b=0, int norm_type=CV_L2, const CvArr* mask=NULL ); src 输入数组 dst 输出数组,支持原地运算 a 输出数组的最小/最大值或者输出数组的范数 b 输出数组的最大/最小值 norm_type 归一化的类型,可以有以下的取值: CV_C - 归一化数组的C-范数(绝对值的最大值) CV_L1 - 归一化数组的L1-范数(绝对值的和) CV_L2 - 归一化数组的(欧几里德)L2-范数 CV_MINMAX - 数组的数值被平移或缩放到一个指定的范围 mask 操作掩膜,用于指示函数是否仅仅对指定的元素进行操作 该函数归一化输入数组使它的范数或者数值范围在一定的范围内 对于不同的norm_type, 根据我的试验(mask=null)的时候, a,b(a>b)起的作用结果如下: norm_type=CV_C时, src 被重新"缩放"(rescale)到dst, 使得dst的值是线性映射到[0,1]区间.(a,b其实无作用) norm_type=CV_L1,或者 CV_L2时, 得到L1,L2规范化的dst.(a,b其实无作用) norm_type=CV_MINMAX时, src会被缩放(rescale)和移动(translation)到dst,使得dst的值是线性映射到[b,a]区间. 代码: #include <iostream> #include <stdio.h> #include <stdlib.h> #include <cv.h> #include <cxcore.h> #include <highgui.h> void displayMat(const CvMat* mat){ int col=mat->width; int row=mat->height; double* data=mat->data.db; for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ std::cout<<data[i*col+j]<<", "; } } std::cout<<std::endl; } int main (int argc, char * const argv[]) { // insert code here... std::cout << "normalizationn"; double data[]={1,4,5,6,7,10}; CvMat src=cvMat(6,1,CV_64FC1,data); CvMat dst=cvMat(6,1,CV_64FC1,data); std::cout<<"a=5,b=0: ";cvNormalize(&src,&dst,5,0,CV_C,NULL); displayMat(&dst);std::cout<<"---------"<<std::endl; std::cout<<"a=5,b=0: ";cvNormalize(&src,&dst,5,0,CV_L1,NULL); displayMat(&dst);std::cout<<"---------"<<std::endl; std::cout<<"a=5,b=0: ";cvNormalize(&src,&dst,5,0,CV_L2,NULL); displayMat(&dst);std::cout<<"---------"<<std::endl; std::cout<<"a=5,b=0: ";cvNormalize(&src,&dst,5,0,CV_MINMAX,NULL); displayMat(&dst);std::cout<<"---------"<<std::endl; return 0; } 当cvMat={1,4,5,6,7,10}, a=5,b=0的时候,输出结果如下: a=5,b=0: CV_C: 0.1, 0.4, 0.5, 0.6, 0.7, 1, --------- a=5,b=0: CV_L1: 0.030303, 0.121212, 0.151515, 0.181818, 0.212121, 0.30303, --------- a=5,b=0: CV_L2: 0.0663723, 0.265489, 0.331862, 0.398234, 0.464606, 0.663723, --------- a=5,b=0: CV_MINMAX: 0, 1.66667, 2.22222, 2.77778, 3.33333, 5, --------- L1_norm: 每個元素乘上1/sqrt(1+4+5+6+7+10) L2_norm: 每個元素乘上1/sqrt(1+16+25+36+49+100) CV_MINMAX:使每個元素限制在[a=5,b=0]之間算法如下:dst(i)=(src(i)-min(src))*(5-0)/(max(src)-min(src)) 1-->0 4-->3*5/9=1.6666 5-->4*5/9=2.2222转载地址:https://blog.csdn.net/LJH0600301217/article/details/8767914 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年03月23日 20时58分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
cad快速看图网络出错_苹果用户福音——CAD快速看图mac版来啦
2019-04-21
kali如何安装netcat_Netcat使用-01
2019-04-21
高级流程图_工作中一定要掌握的六西格玛高级流程图(SIPOC)!
2019-04-21
7中ps显示的内容_办公小达人教你如何在Word表格中跨页显示表头等内容
2019-04-21
的setinterval函数_javascript常用的工具函数(四)
2019-04-21
椭圆极点极线性质_圆锥曲线(13)———椭圆切线方程的6种证明方法
2019-04-21
曲线绕x轴旋转曲面方程_曲线绕着Ox轴旋转所得的曲面方程是______。
2019-04-21
c语言怎么把数字倒过来_c语言编程:实现数字的翻转
2019-04-21
nuxt引入js_nuxt.js基本路由配置
2019-04-21
esrgan_关于ESRGAN复现的问题
2019-04-21
深度linux安装postgresql_linux 安装postgresql
2019-04-21
Mysql in_如何让mysql in()查询结果按in集合顺序显示的方法
2019-04-21
mysql的limit和or_Mysql order by与limit混用陷阱
2019-04-21
anchors如何获得_YOLOv3 K-means获取anchors大小
2019-04-21
mysql 并发死锁_Mysql并发更新导致死锁
2019-04-21