sklearn中img_to_graph返回值问题

image.img_to_graph返回的值是什么意思? chrome.png这个图像

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.colors

from sklearn.cluster import spectral_clustering

from sklearn.feature_extraction import image

from 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的

ibeautiful
浏览 630回答 2
2回答

忽然笑

我是这么理解的:这个存的是邻近点之间的图像梯度值图像梯度:图像梯度是图像中强度或颜色的方向变化,梯度的方向是函数f(x,y)(图像中强度或颜色)变化最快的方向,当图像中存在边缘时,一定有较大的梯度值,相反,当图像中有比较平滑的部分时,灰度值变化较小,则相应的梯度也较小这里采用的是coo_matrix格式,也就是稀疏矩阵的三元组形式,()里面是两个点的位置,后面的是图像梯度值例如(1,2) 0.987那么就是说第1个点和第2个点的图像梯度值为0.987注意:在矩阵中点的编号是按行优先编号,从0开始的[[0,1,2][3,4,5][6,7,8]...]不知道这样理解有没有错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python