python 高斯金字塔_12、高斯金字塔、拉普拉斯金字塔与图片尺寸缩放(示例代码)...

article/2025/8/15 4:17:45

一、引言

我们经常会将某种尺寸的图像转换为其他尺寸的图像,如果放大或者缩小图片的尺寸,笼统来说的话,可以使用OpenCV为我们提供的如下两种方式:

(1)resize函数。这是最直接的方式,

(2)pyrUp( )、pyrDown( )函数。即图像金字塔相关的两个函数,对图像进行向上采样,向下采样的操作。

pyrUp、pyrDown其实和专门用作放大缩小图像尺寸的resize在功能上差不多,披着图像金字塔的皮,说白了还是在对图像进行放大和缩小操作。另外需要指出的是,pyrUp、pyrDown在OpenCV的imgproc模块中的Image Filtering子模块里。而resize在imgproc 模块的Geometric Image Transformations子模块里。

二、关于图像金字塔

图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。

图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

20180914141849783140.png

一般情况下有两种类型的图像金字塔常常出现在文献和以及实际运用中。他们分别是:

1 高斯金字塔(Gaussianpyramid): 用来向下采样,主要的图像金字塔2 拉普拉斯金字塔(Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,

可以对图像进行最大程度的还原,配合高斯金字塔一起使用。

两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。要从金字塔第i层生成第i+1层(我们表示第i+1层为G_i+1),我们先要用高斯核对G_1进行卷积,然后删除所有偶数行和偶数列。当然的是,新得到图像面积会变为源图像的四分之一。按上述过程对输入图像G_0执行操作就可产生出整个金字塔。

当图像向金字塔的上层移动时,尺寸和分辨率就降低。OpenCV中,从金字塔中上一级图像生成下一级图像的可以用PryDown。而通过PryUp将现有的图像在每个维度都放大两遍。

图像金字塔中的向上和向下采样分别通过OpenCV函数 pyrUp 和 pyrDown 实现。

概括起来就是:

1 对图像向上采样:pyrUp函数2 对图像向下采样:pyrDown函数

这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。而如果我们按上图中演示的金字塔方向来理解,金字塔向上图像其实在缩小,这样刚好是反过来了。

但需要注意的是,PryUp和PryDown不是互逆的,即PryUp不是降采样的逆操作。这种情况下,图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充。然后给指定的滤波器进行卷积(实际上是一个在每个维度都扩大为原来两倍的过滤器)去估计“丢失”像素的近似值。

PryDown( )是一个会丢失信息的函数。为了恢复原来更高的分辨率的图像,我们要获得由降采样操作丢失的信息,这些数据就和拉普拉斯金字塔有关系了。

1、高斯金字塔

高斯金字塔是通过高斯平滑和亚采样获得一些列下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截至频率从上一层到下一层是以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。金字塔的图像如下:

20180914141849923771.png

另外,每一层都按从下到上的次序编号, 层级 G_i+1 (表示为 G_i+1尺寸小于第i层G_i)。

(1)对图像的向下取样

为了获取层级为 G_i+1 的金字塔图像,我们采用如下方法:

<1>对图像G_i进行高斯内核卷积<2>将所有偶数行和列去除

得到的图像即为G_i+1的图像,显而易见,结果图像只有原图的四分之一。通过对输入图像G_i(原始图像)不停迭代以上步骤就会得到整个金字塔。同时我们也可以看到,向下取样会逐渐丢失图像的信息。以上就是对图像的向下取样操作,即缩小图像。

(2)对图像的向上取样

如果想放大图像,则需要通过向上取样操作得到,具体做法如下:

<1>将图像在每个方向扩大为原来的两倍,新增的行和列以0填充<2>使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素”的近似值

得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊,因为在缩放的过程中已经丢失了一些信息,如果想在缩小和放大整个过程中减少信息的丢失,这些数据形成了拉普拉斯金字塔。那么,我们接下来一起看一看拉普拉斯金字塔的概念吧。

2、拉普拉斯金字塔

我们可以将拉普拉斯金字塔理解为高斯金字塔的逆形式。另外再提一点,关于图像金字塔非常重要的一个应用就是实现图像分割。图像分割的话,先要建立一个图像金字塔,然后在G_i和G_i+1的像素直接依照对应的关系,建立起”父与子“关系。而快速初始分割可以先在金字塔高层的低分辨率图像上完成,然后逐层对分割加以优化。

三、resize()函数解析

resize( )为OpenCV中专职调整图像大小的函数。此函数将源图像精确地转换为指定尺寸的目标图像。如果源图像中设置了ROI(Region Of Interest ,感兴趣区域),那么resize( )函数会对源图像的ROI区域进行调整图像尺寸的操作,来输出到目标图像中。若目标图像中已经设置ROI区域,不难理解resize( )将会对源图像进行尺寸调整并填充到目标图像的ROI中。

很多时候,我们并不用考虑第二个参数dst的初始图像尺寸和类型(即直接定义一个Mat类型,不用对其初始化),因为其尺寸和类型可以由src,dsize,fx和fy这其他的几个参数来确定。看一下它的函数原型:

C++: void resize(InputArray src,OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可

第二个参数,OutputArray类型的dst,输出图像,当其非零时,有着dsize(第三个参数)的尺寸,或者由src.size()计算出来

第三个参数,Size类型的dsize,输出图像的大小

第四个参数,double类型的fx,沿水平轴的缩放系数

第五个参数,double类型的fy,沿垂直轴的缩放系数

第六个参数,int类型的interpolation,用于指定插值方式,默认为INTER_LINEAR(线性插值)

当第三个参数为0时,由下面的公式计算其值:

20180914141850067331.png

当第四个参数为0时, 由下面的公式计算其值:

20180914141850440392.png

当第五个参数为0时,由下面的公式计算其值:20180914141850503871.png

第六个参数,差值方式可以取下列值:

1 INTER_NEAREST -最近邻插值2 INTER_LINEAR -线性插值(默认值)3 INTER_AREA -区域插值(利用像素区域关系的重采样插值)4 INTER_CUBIC –三次样条插值(超过4×4像素邻域内的双三次插值)5 INTER_LANCZOS4 -Lanczos插值(超过8×8像素邻域的Lanczos插值)

若要缩小图像,一般情况下最好用CV_INTER_AREA来插值,

而若要放大图像,一般情况下最好用CV_INTER_CUBIC(效率不高,慢,不推荐使用)或CV_INTER_LINEAR(效率较高,速度较快,推荐使用)。

调用范例一:

1 Mat dst=Mat::zeros(512 ,512, CV_8UC3 );//新建一张512x512尺寸的图片

2 Mat src=imread(“1.jpg”);3 //显式指定dsize=dst.size(),那么fx和fy会其计算出来,不用额外指定。

4 resize(src, dst, dst.size());

调用范例二:

1 Mat dst;2 Mat src=imread(“1.jpg”)3 //指定fx和fy,让函数计算出目标图像的大小。

4 resize(src, dst, Size(), 0.5, 0.5);

【完整示例】

1 #include

2 #include

3

4 using namespacecv;5

6 intmain()7 {8 //载入原始图

9 Mat srcImage = imread("1.jpg"); //工程目录下应该有一张名为1.jpg的素材图

10 Mat tmpImage,dstImage1,dstImage2;//临时变量和目标图的定义

11 tmpImage=srcImage;//将原始图赋给临时变量12

13 //显示原始图

14 imshow("【原始图】", srcImage);15

16 //进行尺寸调整操作

17 resize(tmpImage,dstImage1,Size( tmpImage.cols/2, tmpImage.rows/2 ),(0,0),(0,0),3);18 resize(tmpImage,dstImage2,Size( tmpImage.cols*2, tmpImage.rows*2 ),(0,0),(0,0),3);19

20 //显示效果图

21 imshow("【效果图】之一", dstImage1);22 imwrite("效果1.jpg", dstImage1);23 imshow("【效果图】之二", dstImage2);24 imwrite("效果2.jpg", dstImage2);25 waitKey(0);26 return 0;27 }

四、pyrUp()函数剖析

pyrUp( )函数的作用是向上采样并模糊一张图像,说白了就是放大一张图片。函数原型:

1 C++: void pyrUp(InputArray src, OutputArraydst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT )

1 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。2 第二个参数,OutputArray类型的dst,输出图像,和源图片有一样的尺寸和类型。3 第三个参数,const Size&类型的dstsize,输出图像的大小;4 第四个参数,int类型的borderType,又来了,边界模式,一般我们不用去管它。

其中,第三个参数有默认值Size(),即默认情况下,由Size(src.cols*2,src.rows*2)来进行计算,且一直需要满足下列条件:

20180914141850589812.png

pyrUp函数执行高斯金字塔的采样操作,其实它也可以用于拉普拉斯金字塔的。首先,它通过插入可为零的行与列,对源图像进行向上取样操作,然后将结果与pyrDown()乘以4的内核做卷积,就是这样。

【示例】

1 #include

2 #include

3

4 using namespacecv;5

6 intmain( )7 {8 //载入原始图

9 Mat srcImage = imread("1.jpg"); //工程目录下应该有一张名为1.jpg的素材图

10 Mat tmpImage,dstImage;//临时变量和目标图的定义

11 tmpImage=srcImage;//将原始图赋给临时变量12

13 //显示原始图

14 imshow("【原始图】", srcImage);15 //进行向上取样操作

16 pyrUp( tmpImage, dstImage, Size( tmpImage.cols*2, tmpImage.rows*2) );17 //显示效果图

18 imshow("【效果图】", dstImage);19 imwrite("效果.jpg", dstImage);20

21 waitKey(0);22

23 return 0;24 }

五、pyrDown()函数剖析

pyrDown( )函数的作用是向下采样并模糊一张图片,说白了就是缩小一张图片。函数原型如下:

C++: void pyrDown(InputArray src,OutputArray dst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT)

1 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。2 第二个参数,OutputArray类型的dst,输出图像,和源图片有一样的尺寸和类型。3 第三个参数,const Size&类型的dstsize,输出图像的大小;

其中第三个参数有默认值Size(),即默认情况下,由Size Size((src.cols+1)/2, (src.rows+1)/2)来进行计算,且一直需要满足下列条件:

20180914141850748998.png

【示例】

1 //pyrDown()函数的使用

2 #include

3 #include

4

5 using namespacecv;6

7 intmain( )8 {9 //载入原始图

10 Mat srcImage = imread("1.jpg"); //工程目录下应该有一张名为1.jpg的素材图

11 Mat tmpImage,dstImage;//临时变量和目标图的定义

12 tmpImage=srcImage;//将原始图赋给临时变量13

14 //显示原始图

15 imshow("【原始图】", srcImage);16 //进行向下取样操作

17 pyrDown( tmpImage, dstImage, Size( tmpImage.cols/2, tmpImage.rows/2) );18 //显示效果图

19 imshow("【效果图】", dstImage);20 imwrite("效果.jpg", dstImage);21

22 waitKey(0);23

24 return 0;25 }

六、综合示例

1 //图像金字塔相关函数的综合应用

2 #include

3 #include

4 #include

5 #include

6

7 #define WINDOW_NAME "【程序窗口】" //为窗口标题定义的宏

8

9 using namespacestd;10 using namespacecv;11

12 Mat g_srcImage, g_dstImage, g_tmpImage;13

14 static voidShowHelpText();15

16 static voidShowHelpText()17 {18 //输出一些帮助信息

19 cout << "欢迎来到OpenCV图像金字塔和resize示例程序~";20 cout << "按键操作说明:"

21 "键盘按键【ESC】或者【Q】- 退出程序"

22 "键盘按键【1】或者【W】- 进行基于【resize】函数的图片放大"

23 "键盘按键【2】或者【S】- 进行基于【resize】函数的图片缩小"

24 "键盘按键【3】或者【A】- 进行基于【pyrUp】函数的图片放大"

25 "键盘按键【4】或者【D】- 进行基于【pyrDown】函数的图片缩小"

26 "";27 }28

29 intmain( )30 {31 //显示帮助文字

32 ShowHelpText();33

34 //载入原图

35 g_srcImage = imread("1.jpg");//工程目录下需要有一张名为1.jpg的测试图像,且其尺寸需被2的N次方整除,N为可以缩放的次数

36 if( !g_srcImage.data )37 {38 cout << "Oh,no,读取srcImage错误~!";39 return false;40 }41

42 //创建显示窗口

43 namedWindow( WINDOW_NAME, CV_WINDOW_AUTOSIZE );44 imshow(WINDOW_NAME, g_srcImage);45

46 //参数赋值

47 g_tmpImage =g_srcImage;48 g_dstImage =g_tmpImage;49

50 int key =0;51

52 //轮询获取按键信息

53 while(1)54 {55 key=waitKey(9) ;//读取键值到key变量中56

57 //根据key变量的值,进行不同的操作

58 switch(key)59 {60 case 27://按键ESC

61 return 0;62 break;63

64 case ‘q‘://按键Q

65 return 0;66 break;67 case ‘a‘://按键A按下,调用pyrUp函数

68 pyrUp( g_tmpImage, g_dstImage, Size( g_tmpImage.cols*2, g_tmpImage.rows*2) );69 cout << ">检测到按键【A】被按下,开始进行基于【pyrUp】函数的图片放大:图片尺寸×2";70 break;71 case ‘w‘://按键W按下,调用resize函数

72 resize(g_tmpImage,g_dstImage,Size( g_tmpImage.cols*2, g_tmpImage.rows*2));73 cout << ">检测到按键【W】被按下,开始进行基于【resize】函数的图片放大:图片尺寸×2";74 break;75 case ‘1‘://按键1按下,调用resize函数

76 resize(g_tmpImage,g_dstImage,Size( g_tmpImage.cols*2, g_tmpImage.rows*2));77 cout << ">检测到按键【1】被按下,开始进行基于【resize】函数的图片放大:图片尺寸×2";78 break;79 case ‘3‘: //按键3按下,调用pyrUp函数

80 pyrUp( g_tmpImage, g_dstImage, Size( g_tmpImage.cols*2, g_tmpImage.rows*2));81 cout << ">检测到按键【3】被按下,开始进行基于【pyrUp】函数的图片放大:图片尺寸×2";82 break;83 case ‘d‘: //按键D按下,调用pyrDown函数

84 pyrDown( g_tmpImage, g_dstImage, Size( g_tmpImage.cols/2, g_tmpImage.rows/2));85 cout << ">检测到按键【D】被按下,开始进行基于【pyrDown】函数的图片缩小:图片尺寸/2";86 break;87 case ‘s‘ : //按键S按下,调用resize函数

88 resize(g_tmpImage,g_dstImage,Size( g_tmpImage.cols/2, g_tmpImage.rows/2));89 cout << ">检测到按键【S】被按下,开始进行基于【resize】函数的图片缩小:图片尺寸/2";90 break;91 case ‘2‘://按键2按下,调用resize函数

92 resize(g_tmpImage,g_dstImage,Size( g_tmpImage.cols/2, g_tmpImage.rows/2 ),(0,0),(0,0),2);93 cout << ">检测到按键【2】被按下,开始进行基于【resize】函数的图片缩小:图片尺寸/2";94 break;95 case ‘4‘: //按键4按下,调用pyrDown函数

96 pyrDown( g_tmpImage, g_dstImage, Size( g_tmpImage.cols/2, g_tmpImage.rows/2) );97 cout << ">检测到按键【4】被按下,开始进行基于【pyrDown】函数的图片缩小:图片尺寸/2";98 break;99 }100

101 //经过操作后,显示变化后的图

102 imshow( WINDOW_NAME, g_dstImage );103

104 //将g_dstImage赋给g_tmpImage,方便下一次循环

105 g_tmpImage =g_dstImage;106 }107

108 return 0;109 }


http://chatgpt.dhexx.cn/article/rMjFOScl.shtml

相关文章

高斯金字塔的构建步骤

转自&#xff1a;https://www.cnblogs.com/starfire86/p/5735061.html SIFT(Scale-Invariant Feature Transform&#xff0c;尺度不变特征转换)在目标识别、图像配准领域具有广泛的应用&#xff0c;下面按照SIFT特征的算法流程对其进行简要介绍对SIFT特征做简要介绍。 高斯金字…

图像处理(九)高斯金字塔及拉普拉斯金字塔

高斯滤波的核就是一个求平均值的卷积核 高斯金字塔也是一个高斯核&#xff0c;只是步长为2&#xff0c;卷积后图片缩小二倍。高斯金字塔的目的是在图像不同大小时可以获得不同的信息&#xff0c;比如说图像较小时可以获得轮廓&#xff0c;图像较大时可以获得细节 使用函数cv2.p…

OpenCV SIFT源码讲解——构建高斯金字塔

目录 一、构建方法 二、函数重要点注释 一、构建方法 高斯金字塔每层图像的尺度为&#xff1a;。理论上金字塔每层图像可以从原图做的高斯滤波得到。但是实际操作中&#xff0c;每组的第一张影像&#xff08;除第一组&#xff09;是上一组倒数第三张影像降采样得到&#xff0c…

OpenCV中的图像金字塔(高斯金字塔、拉普拉斯金字塔)

最近在看关于数字图像的知识点&#xff0c;目前在图像金字塔部分&#xff0c;实在是懒得用手作笔记了&#xff0c;就以其中比较出名的“高斯金字塔”和“拉普拉斯金字塔”为例&#xff0c;基于OpenCV的源代码作解析存个档&#xff1b;毕竟属于基础部分&#xff0c;以后有需要就…

python 高斯金字塔_Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔

Python OpenCV 365 天学习计划&#xff0c;与橡皮擦一起进入图像领域吧。 基础知识铺垫 学习图像金字塔&#xff0c;发现网上的资料比较多&#xff0c;检索起来比较轻松。 图像金字塔是一张图像多尺度的表达&#xff0c;或者可以理解成一张图像不同分辨率展示。 金字塔越底层的…

图像金字塔和高斯金字塔

一&#xff1a;图像金字塔 图像金字塔是图像中多尺度表达的一种&#xff0c;最主要用于图像的分割&#xff0c;是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔实际上是一张图片在不同尺度下的集合&#xff0c;即原图的上采样和下采样集合。金字塔的底部是高分辨…

opencv学习-高斯金字塔和拉普拉斯金字塔

图像金字塔 一个图像金字塔是由一系列的图像组成&#xff0c;最底下一张是图像尺寸最大&#xff0c;最上方的图像尺寸最小&#xff0c;从空间上从上向下看就像一个古代的金字塔。金字塔的底部是待处理图像的高分辨率表示&#xff0c;而顶部是低分辨率的近似。我们将一层一层的…

高斯金字塔与拉普拉斯金字塔的原理与python构建

转载自:https://zhuanlan.zhihu.com/p/94014493 高斯金字塔和拉普拉斯金字塔【1】在图像相关领域应用广泛&#xff0c;尤其是图像融合和图像分割方面。本文从理论和opencv实现两个方面对两种金字塔进行了介绍&#xff0c;并给出了二者的视觉效果。 1、高斯金字塔 在计算机视觉…

图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码

图像金字塔是对图像进行多分辨率表示的一种有效且简单的结构。 一个图像金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像。图像金字塔的底部是待处理图像的高分辨率表示&#xff0c;而顶部是低分辨率表示。 图像金字塔有什么作用&#xff1f; 图像金字塔常用于图像缩放…

高斯金字塔

1、为什么要构建高斯金字塔 高斯金字塔模仿的是图像的不同的尺度&#xff0c;尺度应该怎样理解&#xff1f;对于一副图像&#xff0c;你近距离观察图像&#xff0c;与你在一米之外观察&#xff0c;看到的图像效果是不同的&#xff0c;前者比较清晰&#xff0c;后者比较模糊&am…

系统集成项目管理工程师知识点

信息化知识 在这个学时里&#xff0c;将学习有关信息化的许多知识点&#xff0c;这些知识点的试题大多出现在上午试 题中。这引起知识点主要是&#xff1a; &#xff08;1&#xff09;信息与信息化的定义。 &#xff08;2&#xff09;国家信息化发展战略&#xff08;2006-2020&…

快速了解Scala技术栈

http://www.infoq.com/cn/articles/scala-technology/ 我无可救药地成为了Scala的超级粉丝。在我使用Scala开发项目以及编写框架后&#xff0c;它就仿佛凝聚成为一个巨大的黑洞&#xff0c;吸引力使我不得不飞向它&#xff0c;以至于开始背离Java。固然Java 8为Java阵营增添了一…

一篇博客带你掌握pytorch基础,学以致用(包括张量创建,索引,切片,计算,Variable对象的创建,和梯度求解,再到激活函数的使用,神经网络的搭建、训练、优化、测试)

一篇博客带你掌握pytorch基础&#xff0c;学以致用 1.将numpy的 ndarray对象转换为pytorch的张量 在 Pytroch 中&#xff0c;Tensor 是一种包含单一数据类型元素的多维矩阵&#xff0c;译作张量。熟悉 numpy 的同学对这个定义应该感到很熟悉&#xff0c;就像ndarray一样&…

AI题目整理

文章目录 1、网络配置时batchsize的大小怎样设置?过小和过大分别有什么特点?2、设置学习率衰减的原因?3、有哪些分类算法?4、分类和回归的区别?5、请描述一下K-means聚类的过程?6、训练集、测试集、验证集的作用?7、请讲解一下k折交叉验证?8、分类和聚类的区别?9、讲述…

【深度学习】对迁移学习中域适应的理解和3种技术的介绍

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 1 『如何理解域适应』 域适应是计算机视觉的一个领域&#xff0c;我们的目标是在源数据集上训练一个神经网络&#xff0c;并确保在显著不同于源数据集的目标数据集上也有…

协议模糊的堆叠式Seq2seq注意模型

摘要--通过生成大量异常数据作为程序的输入&#xff0c;模糊测试是发现软件漏洞的有效方法。很难自动模糊协议&#xff0c;因为必须手动构造一个满足协议规范的模板以生成测试用例。在本文中&#xff0c;我们建立了堆叠的seq2seq注意模型来自动生成协议测试用例。Seq2seq-atten…

【推荐收藏】3.5万字图解Pandas

文章目录 第一部分&#xff1a;Pandas 展示技术提升1. 排序2.按多列排序3. 添加一列4. 快速元素搜索5. 按列连接&#xff08;join&#xff09;6.按列分组7. 数据透视表8、Pandas速度 第二部分. Series 和 Index索引(Index)按值查找元素缺失值比较追加、插入、删除统计数据重复数…

层次分析法原理及应用案例

层次分析法是指将一个复杂的多目标决策问题作为一个系统&#xff0c;将目标分解为多个目标或准则&#xff0c;进而分解为多指标&#xff08;或准则、约束&#xff09;的若干层次&#xff0c;通过定性指标模糊量化方法算出层次单排序&#xff08;权数&#xff09;和总排序&#…

论文研读-AI4VIS-可视化推荐-VizML: 一种基于机器学习的可视化推荐方法

VizML: 一种基于机器学习的可视化推荐方法 1 论文概述1.1 摘要1.2 引言 2 问题陈述3 相关工作3.1 基于规则的可视化推荐系统3.2 基于机器学习的可视化推荐系统 4 数据4.1 Plotly介绍4.2 数据描述和分析&#xff0c;收集和清理4.2 数据特征提取4.3 设计选择提取 5 方法5.1 特征处…

《python数据分析与挖掘实战》笔记第3章

文章目录 第3章&#xff1a;数据探索3.1、数据质量分析3.2、数据特征分析3.2.1、分布分析3.2.2、对比分析3.2.3、统计量分析1.集中趋势度量2.离中趋势度量 3.2.4、周期性分析3.2.5、贡献度分析3.2.6、相关性分析1. 直接绘制散点图2. 绘制散点图矩阵3. 计算相关系数 3.3、python…