【发布时间】:2012-06-14 11:01:06
【问题描述】:
所以我有这段代码
for x in range(x1,x2):
for y in range(y1, y2):
cpixel = pixels[x, y]
if bw:
bw_value = int(round(sum(cpixel) / float(len(cpixel))))
all_pixels.append(bw_value)
title = "Averaged (B&W) Pixel Values"
else:
if lumi:
luma = (0.3 * cpixel[0]) + (0.59 * cpixel[1]) + (0.11 * cpixel[2])
all_pixels.append(luma)
title = "Pixel Luminosity Values"
else:
if round(sum(cpixel)) / float(len(cpixel)) > 100:
all_pixels.append(255)
else:
all_pixels.append(0)
title = "Pixel Binary Transform Values"
从此处Getting list of pixel values from PIL 进行了一些修改,以提供边界区域(用户选择)内的像素值(all_pixels)列表。
在记录了一系列相似的值后,我试图找出一种有效的方法来检测列表中的变化。由于该列表似乎从上到下和从左到右列出了像素值。在我将使用它的场景中,它会有一个相似值的列表,直到它到达图像的一个区域,然后值将开始来回切换,直到值再次稳定在一个新值附近。
我感兴趣的是跟踪这两者之间的边界,我想检测这个边界在哪里以及它是向左还是向右移动。除了必须检查每个值附加到 all_pixels 时,我真的想不出任何其他方法,然后只追溯坐标。
但即使这看起来也相当粗略,因为即使我在下一个显着不同的值被视为显着变化而不只是异常值之前将任意数量的值设置为相同,之后值开始在之间切换旧价值观和新价值观。
我想理想情况下我需要为此边界区域/线的坐标生成某种最佳拟合线。我只是需要一些想法来解决这个问题。
【问题讨论】:
-
“重大变化”到底是什么意思?它是干什么用的?听起来您想做某种运动跟踪。
-
确实,基本上我的圆柱体中有粉末,我想跟踪它的体积,因为它在被轻敲后压实。 “我所说的边界是它的阴影产生的粉末顶部的线。任何大于阴影区域产生的值都非常重要。基本上我在每次点击后拍摄一张图像,这就是我正在尝试的方式跟踪它的变化。
标签: python list computer-vision python-imaging-library