Matlab 图像中的自主接缝检测

2024-01-28

I'm trying to detect seams in welding images for an autonomous welding process. enter image description here I want to find pixel positions of the detected line (the red line in the desired image) in the original image.

我使用了以下代码,最终去除了图像中的噪声,得到了下面的结果。

clc,clear,clf;
im = imread('https://i.stack.imgur.com/UJcKA.png');
imshow(im);title('Original image'); pause(0.5);
sim = edge(im, 'sobel');
imshow(sim);title('after Sobel'); pause(0.5);
mask = im > 5;
se = strel('square', 5);
mask_s = imerode(mask, se);
mask(mask_s) = false;
mask = imdilate(mask, se);
sim(mask) = false;
imshow(sim);title('after mask');pause(0.5);
sim= medfilt2(sim);
imshow(sim);title('after noise removal')

不幸的是,图像中没有留下任何东西来完美地找到接缝。

任何帮助,将不胜感激。

Download https://i.stack.imgur.com/UJcKA.png原始图像。


您需要使您的滤波器对噪声更加鲁棒。这可以通过给予它更大的支持来完成:

filter = [ones(2,9);zeros(1,9);-ones(2,9)];
msk = imerode(im > 0, ones(11));  % only object pixels, discarding BG
fim =imfilter(im,filter); 
robust = bwmorph((fim>0.75).*msk,'skel',inf); % get only strong pixels

坚固的面具看起来像:

正如你所看到的,接缝线被很好地检测到,我们只需要把它选为最大的连通分量:

st = regionprops(bwlabel(robust,8), 'Area', 'PixelList');
[ma mxi] = max([st.Area]); % select the region with the largest area

现在我们可以将多边形(第二度)拟合到外观:

pp=polyfit(st(mxi).PixelList(:,1), st(mxi).PixelList(:,2), 2);

这是图像上的:

imshow(im, 'border','tight');hold on;
xx=1:size(im,2);plot(xx,polyval(pp,xx)+2,'r');

请注意+2由于滤波器宽度而产生的 Y 偏移。


PS,
你可能会发现这个线程 https://stackoverflow.com/a/39191920/1714410相关的。

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

Matlab 图像中的自主接缝检测 的相关文章

  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • MATLAB;具有 2+ 个/分割图例的饼图 R2017b

    我正在创建一个饼图 理想情况下希望图例水平显示在顶部和 或底部 然而 在几乎所有情况下 这是不可能的 因为图例超出了数字 因此 我理想情况下希望将图例分成两个 或更多 子图例并单独放置它们 我知道这不是 MATLAB 中的内置功能 我使用的
  • 当 MATLAB 变得非常非常忙时,如何中断它?

    我正在运行一个长时间的模拟MATLAB http en wikipedia org wiki MATLAB我意识到我需要停下来重新运行 然而 MATLAB 确实对这种计算很感兴趣 并且它停止了响应 如何在不终止 MATLAB 的情况下中断此
  • 如何将 Emgu.Cv.Image 转换为 System.Image

    我是 Emgu Cv 的新手 我想知道是否有人可以让我知道如何将 Emgu Cv Image 更改为 System Image 如果需要进一步解释 请告诉我 我会这样做 我的语言我使用的是C 你可以只使用ToImage 方法得到一个Syst
  • 使用Python对图像进行反转和平移

    我编写了以下代码来循环遍历文件夹中的所有图像 创建其底片并将其保存在新的相似名称下 我怎样才能做同样的事情来将它们向右平移 5 个像素 Code from PIL import Image import PIL ImageOps impor
  • 在 Matlab 中将绘图从高斯混合变换为均匀分布

    考虑以下抽签2x1Matlab 中的向量 其概率分布是两个高斯分量的混合 P 10 3 number draws v 1 First component mu a 0 0 5 sigma a v 0 0 v Second component
  • 通过 h5py 将 matlab v7.3 文件读入 python numpy 数组列表

    我知道以前已经有人问过这个问题 但在我看来 仍然没有答案可以解释正在发生的事情 并且不适用于我的情况 我有一个 matlab v7 3 文件 其结构如下 gt rank lt 1x454 cell gt gt each element is
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即
  • 一次分配多个字段的聪明方法?

    由于遗留函数调用 我有时被迫编写像这样的丑陋的包装器 function return someWrapper someField a someField a b someField b and so on realistically it
  • 如何找到给定顶点的所有多边形?

    我有一个顶点列表 并且我知道它们之间的连接 我试图找到顶点的所有多边形形状 这些多边形形状不应重叠 我做了一些研究 我认为如果我可以顺时针 或逆时针 没有区别 遍历顶点 我可以检测多边形形状 因此 我寻找顺时针遍历顶点的解决方案 我发现了一
  • FFT 的功率谱密度

    我有一段代码可以获取部分信号的 FFT 现在我正在尝试获取 PSD Fs 44100 cj sqrt 1 T 6 dt 1 Fs left test 1 right test 2 time 45 interval 636 w range t
  • 无法在 PIL 中对 16 位 TIF 应用图像滤镜

    我尝试使用 python 应用图像过滤器PIL http www pythonware com products pil 代码很简单 im Image open fnImage im im filter ImageFilter BLUR 此
  • 在 .NET 中旋转 JPEG,质量损失最小

    我正在尝试支持从 ASP NET MVC 旋转 JPEG 图像 以 90 度增量 我正在尝试使用System Drawing GDI 但是我遇到了问题 我尝试使用Image RotateFlip http msdn microsoft co
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300

随机推荐

  • SOM(自组织映射)和 K 均值有什么区别?

    stackoverflow中只有一个与此相关的问题 更多的是关于哪个更好 我只是不太明白其中的区别 我的意思是它们都使用向量 这些向量被随机分配给集群 它们都使用不同集群的质心来确定获胜的输出节点 我的意思是 差异到底在哪里 在 K 均值中
  • 如何正确验证验证码?

    我有使用验证码验证的登录表单 我在 php 文件中编写验证时遇到问题 如果验证码输入不正确 则会出现错误 目前我已经验证 如果没有输入验证码 它会显示错误 但是当我输入一些错误的验证码时 登录将继续并将用户登录到站点 这是我的代码 感谢任何
  • Maven 依赖范围未按预期工作

    Maven 2 2 1 声称支持版本范围 参见例如http www sonatype com books mvnref book reference pom relationships sect project dependency htm
  • Google Contacts API - 无法刷新访问令牌

    我们将 Google Contacts API 与 OAuth2 结合使用 credential new GoogleCredential Builder setTransport new NetHttpTransport setJsonF
  • 如何将本地托管的MySQL数据库与docker容器连接

    Through docker compose yml我能够运行该应用程序 现在我们想要将应用程序转移到生产环境 但我们不想使用容器数据库 那么有什么方法可以让我可以使用以下命令将本地 MySQL 数据库与应用程序连接起来docker com
  • Laravel maatwebsite/excel Composer 在 mac 中安装错误

    尝试通过 Mac 版 Composer 在 XAMPP 7 1 32 rev 1 中安装 maatwebsite excel 如何在 XAMPP for mac 中启用这些扩展或者是否存在任何其他问题 请帮我 composer instal
  • 写重的elasticsearch

    我正在使用 kafka storm 和 Elasticsearch 编写一个实时分析工具 并且想要一个针对大约 50K 秒插入进行写入优化的 Elasticsearch 出于 POC 的目的 我尝试将批量文档插入到 Elasticsearc
  • magento管理部分添加类别时出现致命错误

    我在 Magento 管理部分遇到一个错误 当我尝试创建一个类别时 它显示以下致命错误 致命错误 在第 331 行对 C wamp www magento lib Varien Data Tree Dbp php 中的非对象调用成员函数 g
  • 我如何使用 jQuery 来解析 XML,就像我在这里一样

    这个 或其某些变体 是由我的 PHP 脚本输出的 请注意 某些标签在不同的上下文中使用相同的名称
  • 输入文本并保存到文件

    以下函数创建一个新的文本文件并允许用户输入要保存到文件中的文本 我遇到麻烦的主要问题是 1 允许单词之间有空格 2 按 Enter 保存文本 而不是转到新行 void new file void char c 10000 char file
  • 刷新令牌后,Azure AD B2C 访问令牌声明不会更新

    我们在应用程序中使用 Azure AD B2C 我们授权用户使用API https tenant b2clogin com tenant onmicrosoft com policy oauth2 v2 0 authorize client
  • Drupal 迁移 - 现在只有首页可以使用

    我刚刚从 ISP 迁移了 Drupal 站点 到专用的 Linux CentOS 服务器 MySQL 数据库已配置并生成首页 没有错误 问题是只有主页可以使用 所有其他页面均显示 404 页面未找到错误 所以 mysite com 可以工作
  • 具有不同布局的 Rails 邮件程序

    我在通知程序模型中对所有电子邮件 20 多封电子邮件 使用一种布局 但是有时我只想发送一封纯文本电子邮件 根本没有布局或 html 我似乎无法弄清楚如何 如果我尝试发送纯文本电子邮件 我仍然可以获得布局以及电子邮件中的所有 HTML 我正在
  • 有人知道从头开始创建增强现实应用程序或使用开源框架的好教程吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找涵盖创建 AR 应用程序每一步的优秀教程 如果它还涵盖光学等背后的一些理论 那将是有益的 一个好的设置是使用AR工具包 http
  • php header 立即定位?

    为什么 Location 标头没有立即重定向页面 它总是在重定向之前执行整个过程 我举一些例子 header Location http www php net f fopen demo txt w fwrite f Test fclose
  • 如何生成不生成超过 X 个连续元素的随机数序列

    好吧 我真的不知道如何正确地提出这个问题 因为我几乎不知道如何用一句话来描述我想要的东西 我很抱歉 让我开门见山 你可以跳过剩下的 因为我只是想表明我已经尝试过一些东西 而不是来这里一时兴起问问题 我需要一个生成 6 个随机数的算法 但在该
  • 无法从 Angular http 检索数据

    我正在尝试使用 http 模块使用下面的代码从 mongodb 中的集合中检索数据 getPosts return this http get http localhost 5005 blog getposts map res gt con
  • 如何使用 Android 代码使用呼叫拨号器(键盘)启动隐藏的应用程序? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想通过以编程方式拨打某些预定义号码来启动我的应用程序 这是一个隐藏的应用程序 例如 111 我打开拨号器并输入 111 然后我的应用程序收
  • 如何使用java在数组中获取用户输入?

    如何使用Java在数组中获取用户输入 即我们不会在程序中自己初始化它 但用户将给出它的值 请指导 这是一个简单的代码 用于读取字符串stdin 将它们添加到List
  • Matlab 图像中的自主接缝检测

    I m trying to detect seams in welding images for an autonomous welding process I want to find pixel positions of the det