如何分割图像

时间:2012-04-20 15:35:44

标签: python

我有以下格式的一个图像数据:

200406011215.goes12ir

print im.format, im.size, im.mode

MCIDAS (1732, 2600) L

这些图像由线条和元素组成,它们具有相应的亮度值( 0 -255)。我正在尝试创建一个针对具有某些属性的区域的脚本。

脚本:

import Image
im = Image.open("/home/mcidas/Documents/datos/200404031215.goes12ir")
im.show()

如何定位亮度值为> 205的显示图像的区域?

任何人都知道如何在图像上符合指定值的区域识别并绘制标记(可能是圆形)。

1 个答案:

答案 0 :(得分:1)

您可以使用numpy的广播过滤掉超过阈值的像素。如果您事先模糊图像,这将更好。下面给出了一个完整的工作示例(没有模糊),只是为了满足您的需求:

import numpy as np
from pylab import *

# Generate random data with a "bright spot"
N = 100
line = np.linspace(-3,3,N)
X, Y = meshgrid(line,line)
Z  = np.exp(-((X+1)**2+(Y-1)**2)) 
Z += np.random.random(Z.shape)*.5

subplot(121)
imshow(Z,cmap=gray(), origin="lower", extent=[-3,3,-3,3])

Z2 = Z.copy()
# Identify regions that are brighter than threshold on z_scale
threshold = .8
idx = Z2>threshold

Z2[~idx] = None
Z2[idx ] = 1

subplot(122)
imshow(Z2,cmap=gray(), origin="lower", extent=[-3,3,-3,3])

# Place a dot at the "center" of the pixels found
CM = [X[idx].mean(), Y[idx].mean()]
scatter(*CM, s=100,color='red')

show()

enter image description here