如果想收集图像ROI中所有像素值且无需保留矩阵结构,可以使用以下函数。
from skimage.draw import polygon
from roifile import roiread
import numpy as np
def get_values(img, roi):
'''根据roi从图像中截取矩形范围
img: 图像矩阵,np.array
roi: roifile读取的ImageJ ROI得到的roi对象
'''
coords = roi.coordinates()
c = coords[:, 0]
r = coords[:, 1]
rows, cols = polygon(r, c)
return img[rows, cols].flatten()
ROI记录通常包含的是ROI轮廓线条的锚点的坐标,我们实际上想获得是这个ROI区域内的所有像素的值。这里使用了 scikit-image
中的 draw.polygon
函数,这个函数输入锚点坐标后,会返回该区域内所有位置的索引,而且是整数。通过这个索引,可以直接从原来的 img 矩阵中获得所有的数值。所得数值已经是一维的,便于进行直方统计等等。
此处评论已关闭