消除小于某个指定数量阈值的连接像素数量

2024-03-02

我有一些数据,尺寸是249X250。我使用以下代码来绘制数据:

import numpy as np

import pandas as pd

import matplotlib.pyplot as pl

data = pd.read_excel("sample_data.xlsx")

x = np.arange(data.shape[0])

y = np.arange(data.shape[1])

mask_data = np.ma.masked_outside(data,0,233)


pl.contourf(y,x,mask_data)

pl.colorbar()

情节是这样的:

现在我想删除图右侧的较小补丁,并只想保留最大的补丁。为此,我的逻辑是删除那些连接像素数量小于某个指定阈值的连接像素(为此目的,将其设置为 200)。我怎样才能做到这一点?


本质上,您要做的就是识别图像中的所有对象。这可以通过以下方式完成ndimage.measurements.label from scipy.本质上,它在图像中搜索连续的像素组并为它们分配标签。然后,您可以循环遍历这些标记的扇区并计算对象的大小(以像素为单位)并在此基础上进行过滤。

即使您从 Excel 中提取数据,您实际上拥有的只是正在绘制的 249x250 像素“图像”。 Excel 中的每个单元格实际上都是一个包含值的“像素”。为了说明这一点,您可以完全使用 matplotlib 中的图像显示函数(例如plt.imshow)

import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage

xn = 250
yn = 249

# fake data to illustrate that images are just matrices of values
X = np.stack([np.arange(xn)] * yn)
Y = np.stack([np.arange(yn)] * xn).transpose()
Z = np.sin(3*np.pi * X/xn) * np.cos(4*np.pi * Y/yn) * np.sin(np.pi * X/xn)
Z[Z <.5] = 0

fig,axes = plt.subplots(1,2)
axes[0].contourf(Z)
axes[0].set_title("Before Removing Features")

# now identify the objects and remove those above a threshold
Zlabeled,Nlabels = ndimage.measurements.label(Z)
label_size = [(Zlabeled == label).sum() for label in range(Nlabels + 1)]
for label,size in enumerate(label_size): print("label %s is %s pixels in size" % (label,size))

# now remove the labels
for label,size in enumerate(label_size):
    if size < 1800:
        Z[Zlabeled == label] = 0

axes[1].contourf(Z)
axes[1].set_title("After Removing Features")

Illustrated outcome: enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

消除小于某个指定数量阈值的连接像素数量 的相关文章

随机推荐

  • 如何避免一遍又一遍地创建同一个对象?

    如前所述 我继续研究我的 TCP 套接字今天早上 https stackoverflow com questions 74812333 我发现每次我通过这样的套接字发送消息时 套接字的数量都会不断增加 这仅仅意味着我不断创建和打开新的套接字
  • 将最后一个值添加到数据框的顶部。

    最后一个值是 12 我想将最后一个值移到第一个值 这意味着我想附加数据框并将最后一个值移动到数据框的顶部 同时向下移动较早的值 请检查预期的输出 R code a lt c 11 243 121 42 12 a lt data frame
  • Linux - 修改文件修改/访问/更改时间[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我读了一篇关于新隐写方法的文章 时间在我这边 文件系统元数据中的隐写术 http www sciencedirect com scienc
  • 从 mysqldb 查询获取原始十进制值

    我正在使用 MySQLdb 包在 python 中执行 mysql 查询 代码看起来像这样 c db cursor c execute select from table output for row in c output append
  • Pandas - 查找没有 Nan 值的最长拉伸

    我有一个 pandas 数据框 df 其示例如下 time x 0 1 1 1 2 Nan 2 3 3 3 4 Nan 4 5 8 5 6 7 6 7 5 7 8 Nan 真正的框架要大得多 我试图找到 x 系列中最长的非 NaN 值 并打
  • 将可排序表与复选框总和输出相结合

    我当前的代码有一个复选框求和函数 它从数据库中获取值 我还尝试将另一个 Javascript 代码应用到我的表中 以允许我对行中的数据进行排序 例如 对行进行排序后 将所有 5 个 ACER 资产显示在顶部 我想勾选前 5 个显示的 ACE
  • 在 Oracle PL SQL 中检索 xml 元素的值

    有谁知道如何检索的值
  • Ruby on Rails 回调,:before_save 和 :before_create 之间有什么区别?

    你能详细解释一下什么是 before save and before createRuby on Rails 回调是什么 它们与 Rails 验证有什么关系 验证是否发生在 before save or before create 在 Ra
  • 从注入的 DLL 中挂钩 DirectX EndScene

    我想绕道EndScene从任意 DirectX 9 应用程序创建一个小的覆盖层 例如 您可以使用 FRAPS 的帧计数器叠加层 该叠加层在激活时会显示在游戏中 我知道以下方法可以做到这一点 创建一个新的d3d9 dll 然后将其复制到游戏路
  • 如何在具有多个预测变量的混合模型中绘制随机截距和斜率?

    当混合模型具有多个预测变量时 是否可以绘制其随机截距或斜率 对于一个预测器 我会这样做 generate one response two predictors and one factor random effect resp lt ru
  • 在 Emacs 中禁用鼠标滚动

    我在互联网上找到的所有内容都告诉我 emacs 默认情况下禁用鼠标滚动 但我的鼠标非常热情 当我的拇指太靠近笔记本电脑上的触控板时 就会滚动到它的核心内容 我有not允许这样做 这是我的 emacs 来证明这一点 Line by line
  • 如何从字符串中删除 unicode ? [复制]

    这个问题在这里已经有答案了 我用过这个方法 https stackoverflow com questions 39993715 how to remove unicode u00a6 from string 但它不起作用 我的代码包含如下
  • 在 Golang 中将 Value 类型转换为 Map?

    我从 reflect 包中的函数调用中获取此返回值 lt map string string Value gt 想知道我是否可以访问返回值中的实际地图 如果可以 如何访问 EDIT 这就是我进行返回 Value 对象的调用的地方 它返回 l
  • 教授 C 语言时,在指针之前或之后教授数组哪个更好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于那些有课程开发经验的人来说 关于数组的最佳策略是什么 我见过一些学校在教授变量和控制结构之后教授数组 甚至通常在教授函数之前 这允许教授一些
  • 如何使用 messages.properties 文件中的参数?

    In 这个问题 https stackoverflow com q 5600055 456218 它指出 可能有类似的情况 message myMessage This message is for 0 in 1 但我不知道如何向其传递参数
  • 如何让Xcode找到FacebookSDK.h文件?

    它显示 未找到 FacebookSDK FacebookSDK h 文件 但我可以跳转到 import 上的定义 它会将我带到该文件 一旦我添加了 import 它现在就知道 FBFriendPickerDelegate 是什么 并且该行现
  • 有没有如下图移动光标的快捷键?

    我用的是笔记本 没有鼠标 打字后prop并按tab Visual Studio会自动给我一个属性模板 紧迫tab将在之间移动光标type and propertyname占位符 我想在完成属性模板后将光标移至新行 有没有捷径可以做到这一点
  • 在谷歌静态地图上使用自定义图像标记?

    如何在谷歌静态地图上有自定义图像标记 我需要网址格式 这是我尝试过的 但它有默认的标记图像 这就是你想要的 对于自定义图像 请将icon url之后的markers Format icon url lat lng Example icon
  • 快速编译器的奇怪行为

    我在 swift 中有以下功能 func f gt Int let a String a let b a unicodeScalars println b b startIndex value return b b startIndex v
  • 消除小于某个指定数量阈值的连接像素数量

    我有一些数据 尺寸是249X250 我使用以下代码来绘制数据 import numpy as np import pandas as pd import matplotlib pyplot as pl data pd read excel