image.img_to_graph返回的值是什么意思? chrome.png这个图像import numpy as npimport matplotlib.pyplot as pltimport matplotlib.colorsfrom sklearn.cluster import spectral_clusteringfrom sklearn.feature_extraction import imagefrom PIL import Image pic = Image.open('Chrome.png')pic = pic.convert('L')data = np.array(pic).astype(np.float)affinity = image.img_to_graph(data)print(affinity)print(affinity.shape)print(type(affinity))print(affinity.toarray()) 返回的结果是: (0, 1) 0.0039215686274509665 (1, 2) 0.0 (2, 3) 0.0039215686274509665 (3, 4) 0.0 (4, 5) 0.0039215686274509665 (5, 6) 0.0039215686274509665... (1388, 1388) 0.43529411764705883 (1389, 1389) 0.42745098039215684 (1390, 1390) 0.4235294117647059 (1391, 1391) 0.4196078431372549 (1392, 1392) 0.41568627450980394 (1393, 1393) 0.4117647058823529(1394, 1394)<class 'scipy.sparse.coo.coo_matrix'>[[0.81960784 0.00392157 0. ... 0. 0. 0. ] [0.00392157 0.81568627 0. ... 0. 0. 0. ] [0. 0. 0.81568627 ... 0. 0. 0. ] ... [0. 0. 0. ... 0.41960784 0.00392157 0. ] [0. 0. 0. ... 0.00392157 0.41568627 0.00392157] [0. 0. 0. ... 0. 0.00392157 0.41176471]] 为什么稀疏矩阵刚开始的时候行索引和列索引不一样,后面几行行索引和列索引又一样了?为什么稀疏矩阵没有包含(0,0) 0.81960784这一项?是34*41的
2 回答
忽然笑
TA贡献1806条经验 获得超5个赞
我是这么理解的:
这个存的是邻近点之间的图像梯度值
图像梯度:
图像梯度是图像中强度或颜色的方向变化,梯度的方向是函数f(x,y)(图像中强度或颜色)变化最快的方向,当图像中存在边缘时,一定有较大的梯度值,相反,当图像中有比较平滑的部分时,灰度值变化较小,则相应的梯度也较小
这里采用的是coo_matrix格式,也就是稀疏矩阵的三元组形式,()里面是两个点的位置,后面的是图像梯度值
例如(1,2) 0.987
那么就是说第1个点和第2个点的图像梯度值为0.987
注意:在矩阵中点的编号是按行优先编号,从0开始的
[[0,1,2]
[3,4,5]
[6,7,8]
...
]
不知道这样理解有没有错
添加回答
举报
0/150
提交
取消