确定弯曲、拉长区域的中线

2023-11-23

想象一下我有一个热狗的二维图像。我可以在热狗两端之间画一条直线。将此称为中线。它的属性之一是(2D)热狗围绕它具有最低惯性矩的轴。

现在,如果我将热狗弯曲成弧形,这条中线也会扭曲。

给定一张弯曲热狗的图片,我如何确定这条弯曲的中线?该算法应该容忍图像中适量的噪声。


如果我理解你的问题,你想要一条穿过你的物体的线,其中每个点都在物体的中间,也就是说,如果你从中线上的任何点开始并沿着垂直于中线的方向行走,你必须走同样的路两个方向上的距离,直到遇到对象的边界:

Hotdog with midline

(这只是一个插图 - 可能不是几何上正确的中线!)

我的快速而肮脏的解决方案是从一个中轴开始(可以很容易地从一阶矩和二阶矩计算),并通过获取这条线上的每个点来细化它,并在垂直于当前方向的线上找到最近的边界点该点,并将该点移动到这两点的几何中心:

Hotdog iteration 0

如果您对每个点都执行此操作,您应该获得更好的中线近似值。

我说这又快又脏,因为我不确定简单地重复这个过程是否总能收敛到一个稳定的解决方案。这可能取决于在存在弯曲和扭结的情况下如何计算中线的垂直方向。

解决这个问题的一种方法是使用更受物理启发的模型:

  • 计算对象内部的距离变换(每个点到最近边界点的距离)
  • 找到一条穿过物体的平滑线,使距离变换图像的路径积分最大化:

Distance transform

为了找到这条线,我将使用类似于活动轮廓/蛇的算法:

  • 从中轴开始
  • Apply two forces to each point:
    • 一股力将线“推”向距离变换的梯度方向(即远离最近的边界)
    • 另一个力抵消蛇的拉伸和弯曲,因此它保持平滑的形状,没有明显的距离变换梯度。 (谷歌搜索活动轮廓 - 这是相当标准的简历内容,你会发现很多关于它的好文章。)
  • 重复直到收敛或达到某个固定的迭代限制

您需要调整一些参数来实现曲线的平滑度(与活动轮廓一样),但是获得定义良好且表现良好的近似值的机会比使用上面的简单方法要好得多。

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

确定弯曲、拉长区域的中线 的相关文章

  • 调整回形针大小以适合矩形框

    我有一个矩形图像 例如 30x800 像素 如何用回形针缩放它以保留 100x100 像素图像的纵横比 并用边框填充空白区域 一个例子 http www imagemagick org Usage thumbnails pad extent
  • 什么是悲观主义?

    该问题有评论可以使用C 11的吗auto提高性能 https stackoverflow com questions 32510183 can the use of c11s auto improve performance这获得了很多选票
  • 找出圆周上像素坐标的算法

    如果我知道圆心 圆半径和垂直角的像素坐标 如何找出圆圆周上一定角度的像素值 基本上 我试图在不同的时间绘制时钟的指针 1点 2点等 Let h是浮点数形式的小时 h 2 25将是 02 15 等 在 0 到 12 之间 cX cY 是中心的
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • 如何将任意颜色的色度键滤镜应用到实时摄像头源ios?

    基本上我想将色度键滤镜应用到 ios 实时摄像头源 但我希望用户选择将被另一种颜色替换的颜色 我找到了一些使用绿屏的示例 但我不知道如何动态替换颜色而不仅仅是绿色 知道如何以最佳性能实现这一目标吗 您之前曾询问过我的情况GPUImage h
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 如何使用 EMGU 计算 DFT 及其逆函数?

    如何计算图像的 DFT 使用 EMGU 显示它 然后计算反向值以返回原始图像 我将在这里回答我自己的问题 因为我花了一段时间才弄清楚 To test that it works here s an image and here s the
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • 黑色左/右三角形大小不同

    我使用黑色左指三角形 右左指三角形几何形状作为网站上的链接 并使用它们的 HTML 代码 和 9664 9654 由于某种原因 即使我在没有其他元素的空白页面上使用三角形 它们也不会以相同的大小显示 在 Chrome 上 向左指向的位置比向
  • setImageCompressionQuality 与 setCompressionQuality 之间有什么区别 - Imagick

    我在Imagick中找到了两种设置图像压缩质量的方法 A 设置图像压缩质量 B 设置压缩质量 所以我想知道哪一个是最好的以及为什么在以下条件下 我读到了setCompressionQuality方法仅适用于新图像 我正在尝试压缩文件 jpe
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率
  • 过程式编程与 OOP 的开发成本?

    我有相当深厚的 OO 背景 OOD 和 OOP 的好处对我来说是第二天性 但最近我发现自己在一家与过程编程习惯相关的开发商店 实现语言具有一些 OOP 功能 但它们没有以最佳方式使用 更新 每个人似乎对这个话题都有自己的看法 我也是如此 但
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • 验证假名输入

    我正在开发一个允许用户输入日语字符的应用程序 我试图想出一种方法来确定用户的输入是否是日语假名 平假名 片假名或汉字 应用程序中的某些字段不适合输入拉丁文文本 我需要一种方法将某些字段限制为仅限汉字或仅限片假名等 该项目使用UTF 8编码
  • Opencv Mat内存管理

    内存管理对于图像类至关重要 在opencv中 图像类是cv Mat 它有一个微妙的内存管理方案 假设我已经有了自己的图像类SelfImage class SelfImage public int width int height unsig
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • 哪些不同的术语表示相同的事物(或不同的术语,但人们认为它们表示相同的意思)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open

随机推荐

  • iOS - 照片后台上传

    我想创建一个应用程序 它将自动将相机胶卷中的新照片上传到我的网络服务 就像新的 Flickr 应用程序的自动上传功能一样 目前我正在研究如何正确设置它 我猜 iOs 7 的新后台功能可以实现这一点 但是 是否可以从后台获取启动后台传输服务
  • 支持 dropdownlist .NET MVC 中的 optgroup?

    从这个问题继续以编程方式创建下拉列表我希望我的清单有几个optgroup也列出了 目前这可能吗 我知道我需要将 selectList 传递到 dropDownList 但不知道如何将文本 值 optgroup 添加到 selectList
  • 从数组填充嵌套对象?

    我有一个问题 如何从数组创建嵌套对象 IE 我有一个以下数组 var myArr foo bar baz 并需要使其成为一个对象 例如 myObj foo bar baz 我怎样才能正确地做到这一点 Use reduce var myArr
  • 如何从下载的页面中删除所有html标签[重复]

    这个问题在这里已经有答案了 我已经使用 urlopen 下载了一个页面 如何从中删除所有 html 标签 是否有任何正则表达式可以替换所有 标签 我也可以推荐美丽汤这是一个易于使用的 html 解析器 在那里你会做类似的事情 from Be
  • Wav 音频文件压缩不起作用

    是否可以在不降低采样率的情况下压缩 wav 音频文件 我有一个 256 比特率和采样率 8000Hz 的音频文件 我只想将比特率降低到 128 64 kbs 我尝试转换为 mp3 再转换回 wav ffmpeg i 输入 wav 1 mp3
  • 电子邮件屏蔽的正则表达式

    我正在尝试编写正则表达式来掩盖电子邮件地址 下面的例子 input 电子邮件受保护 输出 j e com 我已经尝试过以下方法 但我似乎无法使其正常工作 regex lt 输出 j example en com regex lt 输出 j
  • 使用 Amazon EC2/S3 将本地数据复制到 Hadoop 集群上的 HDFS 时出现问题

    我在 Amazon EC2 上设置了一个包含 5 个节点的 Hadoop 集群 现在 当我登录主节点并提交以下命令时 bin hadoop jar
  • 为什么这不起作用?选择中的动态

    好的 我这样做 Select Range 1 20 gt Dynamic q 然后我创建滑块 Slider Dynamic q 1 20 它总是返回一个空集 为什么 Update这样做的目的是当我移动滑块时让设置发生变化 关键是 请记住 D
  • 我可以使用什么正则表达式来查找逗号分隔列表中的 Nᵗʰ 条目?

    I need a regular expression that can be used to find the Nth entry in a comma separated list 例如 假设此列表如下所示 abc def 4322 e
  • Google Chrome 在崩溃后恢复会话 cookie,如何避免?

    在 Google Chrome 上 我在 Windows 8 1 上的版本 35 上看到了这个 到目前为止我没有尝试其他版本 当浏览器崩溃时 或者您只需拔掉电源线 您将被要求恢复上一个会话当你再次打开它时 好的feature but 它也会
  • 如何解决 shell 脚本中的此错误:“read: Illegal option -t”?

    bin bash echo n Hurry up and type something gt if read t 10 response then echo Greate you made it in time else echo sorr
  • win7无法安装Cython

    所以我尝试在 ta lib 上使用 Cython 并且使用 mrjbq7 提供的包装器 非常感谢 所以我尝试在我的计算机上安装 Cython 0 19 1 然后执行python setup py install在 ta lib master
  • 从一个 NSMutableArray 中删除包含在另一个数组中的元素

    我有两个数组 A 和 B 如果 B 中存在这些元素 如何从 A 中删除这些元素 例如数组A 1 2 3 4 5 数组B 1 3 我想从数组 A 中删除 1 和 3 这样操作后数组 A 只包含 2 4 5 除了循环之外 还有其他更有效的方法吗
  • 操作邮件程序 SMTP 谷歌应用程序

    我尝试将 actionmailer 配置为通过 google apps 使用 smtp 发送 config action mailer delivery method smtp config action mailer smtp setti
  • 将字节数组中的 ASCII 转换为字符串

    我在 C 中的字符串转换似乎遇到了问题 我的应用程序收到了一个由 ASCII 字符串 每个字符一个字节 组成的字节数组 不幸的是 它的第一个位置也有一个 0 那么如何将这个字节数组转换为 C 字符串呢 以下是我尝试转换的数据示例 byte
  • 在 Excel VBA 工作簿的立即窗口中执行多行

    我是否只能在 Excel VBA 立即窗口中执行 1 个命令 有没有办法执行多个语句 使用冒号 将多个语句连接在一起的键 前任 MsgBox msgBox1 MsgBox msgBox2 将显示两个警报消息框
  • 使用 Java 连接到 Microsoft Dynamics CRM 本地 Web 服务?

    是否有任何在线资源显示使用 Java 编写的客户端访问 Microsoft CRM 本地 Web 服务的基本步骤 我应该使用哪个 Web 服务工具包 我尝试使用 JAXB 但 WSDL 元素命名存在冲突 需要类自定义 如果我找到正确的绑定修
  • 在C中访问另一个程序的变量

    在Python中 您可以使用id函数来了解变量的内存位置 因此 X Hello world print id X Output is equal to 139806692112112 0x7F27483876F0 我尝试使用 C 中的指针访
  • HashMap 的构建器

    Guava 为我们提供了很棒的 Java 类型工厂方法 例如Maps newHashMap 但是还有 java 地图构建器吗 HashMap
  • 确定弯曲、拉长区域的中线

    想象一下我有一个热狗的二维图像 我可以在热狗两端之间画一条直线 将此称为中线 它的属性之一是 2D 热狗围绕它具有最低惯性矩的轴 现在 如果我将热狗弯曲成弧形 这条中线也会扭曲 给定一张弯曲热狗的图片 我如何确定这条弯曲的中线 该算法应该容