首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确计数用Mahotas检测到的区域像素

正确计数用Mahotas检测到的区域像素
EN

Stack Overflow用户
提问于 2016-04-08 21:13:05
回答 1查看 317关注 0票数 0

我正在使用所附的算法,其目的是测量代码所标识区域的像素数量:

代码语言:javascript
复制
`mahotas.label(image)`

问题是,背景面积越大,检测到的像素数就越多,考虑到所有点在不同图像中的像素数都是相同的。这是由于以下一行:

代码语言:javascript
复制
`mh.gaussian_filter(imagen,4)`

然而,这不应该发生,因为我需要的是,区域是完全独立的测量区域,有背景。

附加不同大小的脚本和图像,但以相同的广场点200x200像素为例。

代码语言:javascript
复制
import mahotas as mh
import mahotas.demos
import numpy as np
from pylab import imshow, show
imagen = mahotas.imread('76x66.png')
#imagen = mahotas.imread('100x100.png')
#imagen = mahotas.imread('200x200.png')
imagen = imagen[:,:,0]
imagen = mh.gaussian_filter(imagen, 4)
imagen = (imagen> imagen.mean())
etiquetas, unidades = mahotas.label(imagen)
sizes = mahotas.labeled.labeled_size(etiquetas)
print sizes[0]
imshow(imagen)
show()

结果:

  • 图像100x100.png打印大小= 1012像素
  • 图像200x200.png打印大小= 1292像素
  • 图像76x66. 848打印大小=848像素

但是,每个人都应该是平等的或相似的

EN

回答 1

Stack Overflow用户

发布于 2016-06-03 18:49:43

由于区域有不同的大小,背景(空置的空间)在三种情况下也会不同,如您在回答中所示。您的代码输出值-- 1012、1292和848 --分别是三种情况下的后端大小。但是您也提到了"...the的意图是测量代码所标识的区域的像素数量……“这是你赖以生存的:print sizes[1].

显然,对于这三种情况--你应该得到8988,38708和4168 --按照上述结果的顺序是不相等的。这是根据您编辑后的参考链接provided.Code:

代码语言:javascript
复制
import mahotas as mh
import mahotas.demos
import numpy as np
from pylab import imshow, show

imagen = np.zeros((400,400),bool)
imagen = mh.gaussian_filter(imagen, 4)
imagen = (imagen> imagen.mean())

imagen[3:79,1:77]=1
imagen[80:180,78:178]=1
imagen[185:385,194:394]=1

etiquetas, nr_objects = mh.label(imagen)

sizes = mahotas.labeled.labeled_size(etiquetas)
print sizes[0]

imshow(etiquetas, interpolation='nearest')
show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36509440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档