问题标签 [binary-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1505 浏览

opencv - OpenCV 将 Mat 保存为二进制(1 位深度)TIFF

假设我们Mat在应用 OpenCv 之后有一个Imgproc.adaptiveThreshold

当我保存binaryImage使用时Highgui.imwrite

一切都很好,除了输出 TIFF 实际上不是二进制 TIFF - 它是 8 位深度图像: 在此处输入图像描述

我想要实现的是类似于以下具有 1 位深度的 TIFF 格式:

在此处输入图像描述

问题是如何使用 OpenCV 做到这一点?

0 投票
0 回答
37 浏览

matlab - 如何获得基于对象内部的最大矩形

我在 MATLAB 上有一个二进制图像。假设图像中有一个物体,像素值1和0分别代表物体和背景。我想获得可以基于对象内部的最大体积的矩形。是否有解决此问题的内置函数或算法建议?

0 投票
1 回答
628 浏览

matlab - matlab中的特殊点距离变换

我使用matlab计算二值图像的距离变换,发现bwdist()可以计算图像所有点的距离,但我只想知道一个特殊点的距离。例如,我有一个像这样的二进制图像

bwdist() 计算所有点的距离变换

但我只想计算点图像的距离(3,2),所以函数给我 1.4142

有什么功能可以做吗?

0 投票
1 回答
311 浏览

algorithm - 不使用函数的洪水填充(Matlab)

我正在做我的项目,我首先需要做的一项操作是在实现结果之前进行洪水填充。我知道有可用的功能,例如 bwmorph 或 imfill 来填充我图像的黑色像素,但我需要在没有任何功能的情况下这样做。请帮忙!

原图:

在此处输入图像描述

结果图片:

在此处输入图像描述

0 投票
1 回答
542 浏览

opencv - 将二进制阈值图像 (CV_8UC1) 插入彩色垫 (CV_8UC4) 的 ROI?

我有一系列 CV_8UC4 类型的图像。它的高清尺寸为 1280x720。我正在图像的 ROI 上执行 bgfg 分割(特别是 MOG2)。算法完成后,我得到了 ROI 大小和 CV_8UC1 类型的二进制图像。我想将此二进制图像插入原始大图像。我怎样才能做到这一点?

这是我正在做的事情(为了便于阅读,代码被简化):

那么,如何才能将 fgMask 插入到原始图像中呢?如何仅针对 ROI 进行此 CV_8UC1 -> CV_8UC4 转换?

谢谢你。

0 投票
2 回答
789 浏览

image - 调整图像大小以适合 MATLAB 中的孤立对象

我正在处理在单色背景下包含单个对象的 RGB 图像。

我的目标是隔离图像中的对象并调整图像大小以仅包含对象。

通过使用适当的阈值将图像转换为二进制图像,我已经成功地检测到对象。然后,为了隔离原始 RGB 图像中的对象,我使用二进制图像作为原始 RGB 图像的掩码。

这给我留下了一张只包含被黑色背景包围的物体的图像。这是因为我使用的二进制图像蒙版包含白色像素中的对象和黑色像素中的背景,并且由于强度值为 0,因此蒙版过程将所有不属于对象的像素转换为黑色像素。我在下面附上了一个例子。

两个木偶

我现在想在对象周围绘制一个边界框并将图像的大小调整为边界框的大小,这样我就可以尽可能多地摆脱周围的黑色像素。有没有办法做到这一点?任何帮助,将不胜感激。

0 投票
4 回答
332 浏览

matlab - 如何在图像中添加边距?

我有一个 18x18 像素的二进制图像,我想在这个图像周围放置边距,以获得 20x20 像素的图像。

问题描述

图像是二进制的,可以用 1 和 0 的矩阵表示。0 像素为黑色,1 像素为白色。我需要在我拥有的图像周围放置 1 个零像素的边距。

我该怎么做?

0 投票
0 回答
145 浏览

matlab - 在 Matlab 中清洁二进制图像

我有一个大小为 300X200 像素的嘈杂二进制图像。我需要清理它,但使用给定的目标函数,我应该最大化它。所以我有嘈杂的二值图像和目标函数。我应该找到最大化我的目标函数的清洁二进制图像。我需要在 Matlab 中解决这个任务。

我的第一个想法是生成每个可能的大小为 300X200 的二进制矩阵,并找到给目标函数一个最大值的那个。但我知道这不是一个好方法,因为可能的矩阵太多了。

有谁知道更好的方法来做到这一点?请帮忙!非常感谢 :)

0 投票
1 回答
107 浏览

matlab - Matlab将二进制图像显示为视频

我使用此代码作为起点来检测视频中手的肤色。作为第一步,我已经设法做到这一点并通过使用imshow(segment); 来显示结果;Matlab 中的函数。

这是我不完全理解的代码(在线找到):

结果如下: 分段皮肤

我遇到的问题是,我无法弄清楚如何使用vision.VideoPlayervision.VideoDeployer将二进制图像显示为视频,因此我可以像这样在原始视频旁边显示皮肤检测到的视频的结果例子:

http://uk.mathworks.com/help/vision/examples/motion-based-multiple-object-tracking.html?searchHighlight=multiple%20motion%20detection

0 投票
5 回答
1700 浏览

algorithm - 如何减少二值图像中的背景噪声

这是二进制图像的示例,即作为输入,我们有一个具有 2 个可能值的 imageByteArray:0255

示例 1:在此处输入图像描述

示例 2:在此处输入图像描述

图像在背景上包含一些文档边缘。

任务是在对边缘像素的影响最小的情况下去除、减少背景像素的数量。

问题是有哪些现代算法和技术可以做到这一点?

我不期望的答案是:使用高斯模糊来消除背景噪声,使用双色调算法(Canny、Sobel 等)阈值或使用霍夫(无论设置什么选项,霍夫线性化都会对这种噪声发疯)

最简单的解决方案是检测所有轮廓并过滤掉长度最短的轮廓。这很好用,但有时取决于图像,它也会几乎消除有用的边缘像素。

更新:作为输入,我在某些背景上有带有文档(驾驶执照 ID、支票、账单、信用卡...)的标准 RGB 图像。主要任务是检测文档边缘。接下来的步骤是众所周知的:灰度、模糊、Sobel 二值化、霍夫概率、找到矩形或梯形(如果找到梯形,则进行透视变换)。在简单的对比背景上一切正常。我询问降噪的原因是我必须处理数千个背景,并且无论使用什么选项,其中一些都会产生噪音。无论 Hough 如何配置,噪声都会导致额外的线路,并且额外的线路可能会欺骗后续逻辑并严重影响性能。(它在 java 脚本中实现,不支持 OpenCV 或 GPU)。