Python:从行高效创建二进制图像

时间:2014-03-28 15:45:19

标签: python numpy scipy scikit-image

给定一条线,我想快速创建一个二元图像,其中两个区域由线分隔。我这样做是为了

rows, cols = pix_arr.shape
arr = [ func(i) for i in range(0,rows*cols)]
arr = np.array(arr,dtype = 'bool')
arr = arr.reshape(pix_arr.shape)

func(i)是

func = lambda i: (i / cols) - m*(i % cols)-c < 0

pix_arr是一些2D numpy数组。 mc是等式中的斜率和常数。

我得到输出,如

enter image description here

有更快的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以简单地执行以下操作:

row_idx = np.arange(rows)[:, None]
col_idx = np.arange(cols)

binary_img = (row_idx - m * col_idx) > c

这将使您接近所需,但根据您为线方程定义轴的方式,您可能需要将结果翻转过来。