如果想收集图像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 矩阵中获得所有的数值。所得数值已经是一维的,便于进行直方统计等等。

最后修改:2024 年 09 月 06 日
请大力赞赏以支持本站持续运行!