如何在python中设置溢出减法以得到零?

2024-04-19 19:14:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出那些特征与基线有显著不同的区域。在

为此,我从基部减去当前图像,f和{}是灰度2d图像矩阵。在

diff = f - b

有些操作会导致溢出,这会导致像素值较高的区域,而这些区域实际上应该设置为零。在

enter image description here

如果f[x][y]<;b[x][y],如何指定操作diff = f - b应为单个像素值生成0?在


Tags: 图像lt区域diff矩阵像素特征灰度
2条回答

我修正了这个问题,我自己做了一个函数,在减去每个像素之前比较它,以防止任何溢出发生。在

def custom_sub(i2,i1):      
    x =  len(i1)
    y =  len(i1[0])

    o = deepcopy(i1)

    for ix in range(x):             
            for iy in range(y):
                if i1[ix][iy] > i2[ix][iy]:
                    o[ix][iy] = 0
                else:
                    o[ix][iy] = i2[ix][iy]-i1[ix][iy]
    return o

这是输出,明亮的区域现在只在火花闪光发生的地方。在

enter image description here

这个question和我的很相似。在我的例子中,减法是用uint8类型执行的,这可以转换成int16。然后,可以对得到的图片进行迭代,去掉任何负数。在

在numpy中,有一种方法不需要转换为更大的整数类型:

f - b.clip(None, f)

或者,相当于

^{pr2}$

相关问题 更多 >