MATLAB 中有没有办法计算哪些离散图像区域包围或被另一个区域包围?

2023-12-01

给出下图:

Regions

我想确定哪些彩色区域被哪些其他彩色区域包围或包围哪些其他彩色区域。这是如何计算的?有没有办法创建一种显示此信息的树或表?

示例:所有红色像素都在黄色区域内。


据我所知,没有内置函数可以执行此计算,但这里有一个关于如何获取所需信息的想法......

首先,您需要从上面获取 RGB 图像,并将其转换为索引图像和颜色图。这是一种方法:

img = double(imread('nested_regions.png'))./255;  % Load the RGB image
map = unique(reshape(img, [], 3), 'rows');        % Find the unique colors
labelImage = rgb2ind(img, map);                   % Get a labeled (i.e. indexed) image
nColors = size(map, 1);

接下来,您需要循环每个标记区域,创建一个蒙版,然后使用以下命令填充该蒙版中的任何“孔”imfill。如果填充区域包含图像其余部分不包含的标签值,则这些区域完全包含在您填充的区域中。下面的代码使用setdiff功能:

contains = cell(nColors, 1);              % Storage for the contained region labels
str=' # | contains\n---+------------\n';  % String for displaying output

for iColor = 1:nColors

  maskImage = (labelImage == iColor-1);      % Mask of the current region
  filledImage = imfill(maskImage, 'holes');  % Mask with holes filled
  holeImage = (filledImage & ~maskImage);    % Mask of the filled holes
  contains{iColor} = setdiff(unique(labelImage(holeImage)), ...
                             unique(labelImage(~holeImage))).';  %.'
  str = [str ' ' num2str(iColor-1) ' | ' num2str(contains{iColor}) '\n'];

end

imshow(labelImage, map, 'InitialMagnification', 60);  % Display image
colorbar();                                           %   with a colorbar
fprintf(str);  % Create some formatted text output

运行上述命令后,您将得到以下结果:

 # | contains
---+------------
 0 | 1  2  3  4  5  6  7  8  9
 1 | 3  4  5  7  9
 2 | 3  4  5  7  9
 3 | 
 4 | 3
 5 | 3  4
 6 | 
 7 | 3  4  5
 8 | 
 9 | 3  4  5  7

enter image description here

例如,红色像素(标记为区域 7)围绕标记区域 3、4 和 5(分别为灰蓝色、紫色和石灰色)中的所有像素。有些区域不形成闭合轮廓,例如 6(浅紫色)和 8(橙色)。区域 1(绿色)实际上并未完全包含在区域 2(蓝色)中,因为一两个绿色的虚假像素位于蓝色区域之外。

希望这能给您一些想法!

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

MATLAB 中有没有办法计算哪些离散图像区域包围或被另一个区域包围? 的相关文章

  • 如何使用opencv将最近的点连接在一起

    在python中使用OpenCV模块是否可以连接下图中的红点 使得每个红点仅与其最近的邻居红点连接一次 第一步 您应该使用适当的工具将图像转换为二进制图像 例如cv2 cvtColor cv2 threshold cv2 bitwise n
  • 有没有一种简单的方法来提供基于 Matlab 的 Web 应用程序或 Web 服务?

    我和一位同事花了几年时间开发一个非常酷的 Matlab 应用程序 MDLcompress 在 Matlab 中 我可以输入 MDLcompress filename txt 它会告诉我有关 filename txt 内容的各种非常酷的内容
  • 在 Matlab 中将变量命名为字符串 [重复]

    这个问题在这里已经有答案了 假设变量 FileName 包含一个字符串 例如 Name1 如何创建名称为 Name1 的变量 本页的示例 4 似乎很相似 但我无法让它工作 这是正确的做法吗 http se mathworks com hel
  • 在Matlab中,是否可以终止脚本,但将其所有内部变量保存到工作区?

    我正在运行一个脚本 但它花费的时间太长 所以我想终止该脚本 然而 它计算了很多数据 我理想情况下不想扔掉这些数据 有没有替代方案ctrl C用什么将内部函数变量保存到工作区 理想情况下我正在寻找一个Matlab键盘快捷键如ctrl C 但如
  • 此代码中 Matlab 与 C++ 速度比较

    我编写了简单的 C 代码并在 C 中对其进行了测试 然后我通过以下方式为 MATLAB 调整了相同的代码mex file name cpp并在 MATLAB 中运行相同的代码 该代码使用与 C 相同的编译器 这是代码 int k for i
  • 使用循环绘制多个结果

    我想使用 for 循环绘制原始和窗口的结果 10 50 100 全部在一个图中这是我得到的情节 https i stack imgur com wAixM png below is my code Read data in data csv
  • matlab常量匿名函数仅返回一个值而不是一个数组

    我在网上查了好几天了 没有找到什么 希望能帮到你 我有一个像这样的匿名函数 f x y sin 2 pi x cos 2 pi y cos 2 pi x sin 2 pi y 需要对一系列点进行评估 例如 x 0 0 1 1 y 0 0 1
  • 我如何知道在 python 中使用 OpenCV 检测到的白色区域的位置?

    例如 在这段代码中 我过滤了视频源以显示白色区域 我如何知道他们的位置 坐标 x y import cv2 import numpy as np cap cv2 VideoCapture 0 while 1 frame cap read h
  • 合并两个 ColorMatrix 或在 Imageview 上同时应用两个或多个 ColorMatrix

    我正在更改 ImageView 的亮度 对比度 饱和度和色调 我对此进行了很多搜索 我得到了一些可以使用的代码颜色矩阵 1 For 亮度ColorMatrix 是类似的东西 float brightness 50F 1 5F ColorMa
  • 在图像批次中随机打乱补丁

    我正在尝试创建一个transform打乱批次中每个图像的补丁 我的目标是以与其他转换相同的方式使用它torchvision trans transforms Compose transforms CenterCrop 224 transfo
  • 在Opencv Python中将RGB图像转换为YUV和YCbCr颜色空间图像

    谁能帮我使用 opencv Python 将 RGB 颜色空间图像转换为 YUV 颜色空间图像和 YCbCr 颜色空间图像 Use cv2 cvtColor src code 要转换颜色空间 代码以COLOR 您可以使用它来查找颜色代码 i
  • 如何为伪随机数生成器设置自定义种子

    我需要在使用的地方进行一些测试randn伪随机数生成器 我如何自己设置种子 以便每次运行此测试时都会得到相同的结果 是的 我知道这有点奇怪 但这就是问题所在 我找到了RANDSTREAM对象具有seed属性 但它是只读的 有什么方法可以用它
  • 将字节转换为图像 ASP.NET c# 并在 Image1.Url 中使用它

    我有一个 WEB APP 它是一个网络摄像头应用程序 它拍摄图像并以字节形式存储到数据库中 话虽这么说 我也不想保存拍摄的图像并将其保存在任何类型的文件夹中现在 显示捕获的图像以供我保存并再次查看的唯一方法是 我有一个在单击捕获图像时触发的
  • 使用 jQuery 异步加载图像

    我想使用 jQuery 在我的页面上异步加载外部图像我尝试过以下方法 ajax url http somedomain com image jpg timeout 5000 success function error function r
  • 如何在 Matlab 中绘制连通性/邻接矩阵图?

    我想在 MATLAB 中绘制网络 电网 的结构图 我有一个包含每个分支的往返节点的列表 我没有节点的坐标 并且每次模拟的系统拓扑都会发生变化 我还需要能够为各种线路 节点分配不同的颜色 以可视化电压问题或过载等 类似于我使用传记 下面的代码
  • 如何使用 Mikolajczyk 的特征检测器/描述符评估框架?

    我正在尝试使用事实上的标准评估我的 SURF 描述符实现的正确性Mikolajczyk 等人的框架 阿尔 http www robots ox ac uk vgg research affine 我使用 OpenCV 来检测和描述 SURF
  • 在java中缩放多页TIFF图像

    我想更改多页 TIFF 图像的高度 因此我使用下面的代码片段来缩放它 但它只返回 tiff 文件的第一页 我猜它会将其转换为 JPEG 图像 如何保留文件的所有页面 public static byte scale byte fileDat
  • 评估函数卷积时出错

    这是我第一次尝试用 matlab 编写任何东西 所以请耐心等待 我正在尝试评估以下 ODE 的解 w N w w f t 与柯西条件 w 0 w 0 0 这里 N 是给定的非线性函数 f 是给定的源 我也需要这个功能 其中 G 是以下 OD
  • 我想知道像tineye.com这样的反向图像搜索服务是如何工作的......?

    像 TinEye 这样的反向图像搜索引擎如何工作 我的意思是进行图像搜索需要哪些参数 不知道 TinEye 是否使用这个 但是SURF http en wikipedia org wiki SURF是用于此目的的常用算法 在这里您可以看到一
  • 如何用纯色填充位图?

    我需要使用唯一的 RGB 颜色创建 24 位位图 分辨率 100x100 像素 并将生成的图像保存到磁盘 我目前使用的是SetPixel http msdn microsoft com en us library 6c7eyzyb aspx

随机推荐

  • NHibernate - 通过不同的键多次 JOIN 到同一个表

    另一个 NHibernate JOIN 问题 我正在尝试通过不同的两个表连接一个表中的两个不同的属性 键 但我无法获得第二个 JOIN 属性 简化示例 我的课 namespace Domain public class Message re
  • 谷歌分析。增强的电子商务。产品展示次数限制

    有人知道增强型电子商务 Google Analytics 发送展示数据的限制吗 我发现奇怪的行为 谷歌限制发送超过 8KB 的数据 我使用数据层来发送电子商务数据 我的页面上有多达 100 个产品 我还使用 unicode 发送产品和类别名
  • 当子文档或集合完成创建时,不会触发 firestore OnCreate

    因此 我正在使用 flutter 和 firebase 构建一个聊天应用程序 每当两个新用户第一次开始互相聊天时 每当其中一个用户发送第一条消息时 我需要触发一个功能 这样我就可以将该信息存储在某处以显示稍后将其作为聊天记录提供给用户 曾经
  • 我不明白Oracle文档中的这一部分?

    你好 我是 Ankur 已经用 java 编码好几年了 我之前读过 Herbert Schildt 的 Head First Java The Complete Reference 最近我在这页中遇到了一个重大谬误 甲骨文文档注意部分说 如
  • 在react-native-pager-view(或任何其他)内动态更改内容

    我正在开发一个项目 我将在寻呼机视图中逐页显示某本书的详细信息和信息作为页面组件 该书包含 500 多个页面 所以我不能只创建 500 个页面组件 例如并将它们插入到寻呼机中 我想的是我可以获得一个特定的页面 仅在上一页和下一页旁边呈现其组
  • 画布不渲染以前的图像

    我有一个 asp net 网络应用程序 我使用 Web 套接字和 HTML5 canvas 将图像渲染到我的网页 这是 JS function setUpImageProc desktopImage onload function ctxL
  • WebKit 边框半径和过渡错误

    在 Google Chrome 的最新稳定版本 版本 31 0 1650 63 m 也包括 Canary 中 当涉及边框半径和过渡时 仍然存在错误 应用了边框半径的元素内的内容在动画结束之前不会被剪切 我已经设法通过转换 顶部 和 左侧 属
  • Chrome 在哪里存储 cookie?

    假设我使用以下命令设置了 cookiesetcookie 函数于PHP setcookie name foo false false 我可以在以下位置看到它 chrome settings cookies 但是 我找不到硬盘上存储的实际文件
  • PDFMiner 无法提取字体

    我正在使用 PDFMiner 将一些 pdf 报告转换为纯文本 并且我的一堆输入 pdf 只是输出了几行可识别的行 然后是一个 cid d 列表 有点像这样 检查报告 用户ID 4 用户ID 5 用户ID 6 用户ID 7 用户ID 8 用
  • 来自本地文件系统的 jQuery Ajax 请求(Windows file:///)

    我正在尝试执行 ajax 请求来获取内容 http localhost 在 Windows Wamp 服务器上运行 该脚本是从这样的地方运行的 file C my path index html 我只是使用标准 ajax 请求来尝试获取 l
  • 无法将正则表达式与 sed 匹配

    我正在尝试匹配一个模式 d x d x d x with sed没有运气 我正在运行的文件是这样的 name something version 0 0 1 description some desc main gulpfile js di
  • 如何在单选按钮组的 *ngFor 中设置最初选定的单选按钮

    Before我使用表单验证一切正常 我的单选按钮组 html 如下所示 div class form group row div
  • Pyglet 的 FPS 是显示器刷新率的一半

    我是 Pyglet 的新手 我编写了一个小程序 可以在屏幕上移动一个球 现在我很难建立 60 fps 的稳定帧速率 虽然 Pyglet 应该与我的显示器的 60Hz 刷新率同步 但 Pyglet 将我的 fps 设置为刷新率的一半 例如 当
  • 将 SSIS 包作为 SQLAgent 作业执行

    我有一个 SQL Server 2008 SSIS 作业 它执行一些 Win 32 exe 文件 当我通过 BIDS 在 Windows 2008 机器上 执行作业时 该作业运行良好 现在我已将包部署在 MSDB 数据库中 并尝试将包作为
  • Prolog算术语法

    如何定义a作为整数 浮点数 我想找到以下结果a b c d 10 where a b c d是整数并且 gt 0 这是一个简单 现代 纯 Prolog 非 CLP 库的解决方案 range X member X 0 1 2 3 4 5 6
  • 对 有效吗?

    以下是有效的 HTML 吗 我特别想知道的是
  • 在 Ruby 中使用数组联合运算符 |= 时,为什么必须在访问器上显式调用 self?

    以这个类为例 class MyClass attr accessor values uniq values def initialize value self uniq values default value self values de
  • 编辑 mongo.conf 后 MongoDB 状态失败(代码退出,状态 = 2)

    我正在尝试使用以下命令远程连接到我的 Google Cloud 服务器Robo 3T也连接MongoDB v4 0 11这样我就可以从窗口看到数据 我运行的是 Ubuntu 18 04LTS Minimal 为了启用 MongoDB 的远程
  • Node js - 创建持久的私人聊天室

    我最近读了很多关于 Node js 的文章 聊天功能看起来非常不错 然而 我见过的唯一的聊天示例基本上都是将聊天服务器广播到固定的 URL 如会议室 是否可以部分使用node js来创建一个更像gchat的聊天客户端 在当前页面上弹出聊天窗
  • MATLAB 中有没有办法计算哪些离散图像区域包围或被另一个区域包围?

    给出下图 我想确定哪些彩色区域被哪些其他彩色区域包围或包围哪些其他彩色区域 这是如何计算的 有没有办法创建一种显示此信息的树或表 示例 所有红色像素都在黄色区域内 据我所知 没有内置函数可以执行此计算 但这里有一个关于如何获取所需信息的想法