【发布时间】:2016-05-04 11:45:03
【问题描述】:
橙色代表数值等于0,白色代表数值等于255,蓝色代表字段,数值从0到255不等。我想去掉橙色区域,即每个图像都有点不同。最好的方法是什么?
编辑 1
我认为这个答案可能会有所帮助:bounding box approach。
除了,我想得到一个数组A_extract 而不是A_trim:
A = np.array([[0, 0, 0, 0, 0, 0, 0],
[0, 255, 0, 0, 0, 0, 0],
[0, 0, 255, 255, 255, 255, 0],
[0, 0, 255, 0, 255, 0, 0],
[0, 0, 255, 255, 255, 0, 0],
[0, 0, 0, 255, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])
A_trim = np.array([[255, 0, 0, 0, 0],
[ 0, 255, 255, 255, 255],
[ 0, 255, 0, 255, 0],
[ 0, 255, 255, 255, 0],
[ 0, 0, 255, 0, 0]])
A_extract = np.array([[255, 255, 255],
[255, 0, 255],
[255, 255, 255])
所以基本上,代码应该找到一个边界框,其中第一行和最后一行(以及第一列和最后一列)中的所有元素都应该具有相同的值(例如 255)。
编辑 2
真实图像是分类卫星图像,存储为 numpy 数组(形状为 cca.7000x8000)而不是 RGB 图像。看起来是这样的:
- 橙色 = 0
- 绿色 = 2
- 粉红色 = 3
- 白色 = 255
目的是去除边缘的 0 值。
【问题讨论】:
-
是的,找到边界框是第一步。如果边界框上的裁剪图像不理想,您可能希望在此示例中将不需要的橙色替换为白色,或使其透明。
-
我建议上传真实图片,而不是“看起来像这样”的图片。就我个人而言,我不知道您在谈论“橙色代表等于 0 的值,白色代表等于 255 的值,蓝色代表字段,其中值从 0 到 255 不等”时是什么意思
-
@Bonzo:我希望我已经足够澄清了。如果没有,请告诉我。
标签: python numpy image-processing crop bounding-box