- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想从源 RAW 图像创建两个图像,在这种情况下是佳能 CR2。我已经对 RAW 转换进行了排序和一些处理。我的最终图像需要是带有 alpha 蒙版的 PNG 和 95% 质量的 JPG,带有 alpha 区域而不是填充黑色。我在这里设置了一个测试图像,显示了我在检测主题方面的进展:
http://imgur.com/a/Q8k3w/all
所以基本上,正如你所看到的,我想从灰色背景中分离出主题。我还想尽可能多地、最好是完整地掩盖在灰色背景上转换的任何阴影。我正在使用我编写的 Python2 脚本,到目前为止主要是 scikit-image。如果需要,我会换成另一个 Python 兼容的图像处理库。此外,我需要在内存中执行所有步骤,以便在使用 PNG 和 JPG 的所有图像处理结束时只保存一次。所以没有 subprocess.Popen 等。
你会从示例图像中看到,我认为至少,我已经有了一些解决方案。我已经将 scikit-image 及其 Canny 边缘算法用于您在我的示例中看到的图像。
我现在需要做的是弄清楚如何用白色填充 Canny 图像中的主题,以便我可以获得合适的纯白色蒙版。在我的大多数示例图像中,应用了 Canny 过滤器,似乎对主体本身进行了良好的边缘检测,通常具有完整的主要边界。但是,我猜我将来可能会得到一些不会发生这种情况的图像,并且主要边界可能会出现小裂缝。如果它看起来会成为以后处理步骤的问题,我需要处理这种情况。
另外,我想知道是否需要将整体边框增加一个像素并将其设置为与我的 0,0 像素相同的颜色(即背景中的第一个像素顶部/左侧),然后运行我的 Canny 过滤器,然后缩小我的再次边框1px?这应该允许检测到底部边缘以及何时主体打破框架的顶部或侧面?
所以我真的只是在寻求建议,并想知道下一步该去哪里获得一个漂亮的固体面具。它需要保持二进制作为二进制掩码,(即主体之外的所有内容都需要完全掩码为 0)。这意味着我需要运行一些东西来寻找某个像素体积以下的孤立像素岛 - 可能是最后一步并将它们添加到蒙版(例如 50px 左右)。
此外,总的来说,经验法则是,如果对象的一点点被掩盖而不是更少的背景被掩盖(即我希望所有或尽可能多的背景/阴影区域被掩盖)会更好。 )
我已经尝试了一些东西,但还没有完全达到目标。我在想 sci_kit 中 find_contours 之类的东西可能会有所帮助。但是我无法从 scikit-image 示例中完全看出我如何选择然后将检测到的轮廓转换为蒙版。今天我已经浪费了很多时间进行实验但没有成功,所以我想我会在这里问,看看是否有人有更好的想法。
这是一种基于 OpenCV 的方法,看起来很有前景:
http://funcvis.org/blog/?p=44
如果可能的话,我想坚持使用 scikit-image 或其他一些可互换的 numpty 图像库。但是,如果使用 OpenCV 或其他库更容易和更快,那么只要我能坚持使用 Python,我就愿意接受想法。
同样值得记住的是,对于我的应用程序,我将始终拥有没有主题的背景图像。所以也许我应该走这条路。问题是我认为简单的差异方法不能很好地处理阴影。在我看来,在某些时候需要某种边缘检测才能获得卓越的掩蔽方法。
“来源 1”
“来源2”
“来源3”
“结果 1”
“结果 2”
“结果 3”
最佳答案
根据有限的经验,我会提供一些尝试的想法。
Canny 边缘检测结果无法区分孔洞(在结果 2 对象中)和纯色区域(在结果 3 中)。这对你的目的好吗?它是否适合您在这些边缘上进行 Blob 检测并填充 Blob ,从而消除结果 2 中的漏洞?
假设您要屏蔽的部分是原始灰色背景区域以及该灰色背景上的较深灰色阴影。此外,一些最小尺寸的灰色区域被称为“洞”,而不是对象上的灰色像素或灰色噪声。 (有什么办法可以区分物体中看起来像灰色背景的部分吗?)
所以考虑这个计划:
ts
(灰色或接近灰色)及其值(或亮度)在阈值范围内 [tv1 .. tv2]
(dark-shadow-background-gray 到 background-gray),那么它可能是背景,所以输出像素为 0(黑色),否则它可能是前景,所以将其设为 255(白色)。 关于python - 使用边缘检测和 scikit-image 在 Python 中去除背景/屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37234413/
给定一个字符串"5 900 000" 我想通过以下模式使用 gsub 去除空格: gsub(/\s/, '') 但这似乎行不通。也没有: gsub(' ', '') 最佳答案 如果你想就地替换,你需要
我编写了一个程序来抓取网站以获取数据并输出到 Excel 表。该程序使用 Microsoft Visual Studio 2010 用 C# 编写。 大多数时候,我从网站获取内容、解析内容并将数据存储
在 MS Access 2007 项目报告中,我有以下(已编辑)查询: SELECT SomeCol FROM SomeTable 问题是, SomeCol 显然包含一些不可见的字符。例如,我看到一个
如 Removing left recursion 中所述,有两种方法可以去除左递归。 使用一些过程修改原始语法以删除左递归 写文法原来没有左递归 人们通常使用什么来删除(没有)ANTLR 的左递归?
我在 CoreData 中存储了一堆艺术家,并希望按名称对它们进行排序,但忽略前缀“the”。例如,“The Beatles”将被排序为“Beatles”,有点像 iTunes/iPod 的做法。 因
我有一个 WebView ,我想从中删除弹性。现在,当滚动小于 webview 的页面时,它会产生弹性效果,显示下面的背景。我想删除这个。 我尝试过执行以下操作,但没有成功。它找到了 WebDynam
我正在调查我们公司使用 Prometheus 从我们在 Kubernetes 上运行的实验中收集统计数据。有计划使用标签来标记我们的云/集群中特定实验的名称。这意味着我们将生成大量标签,这些标签会随着
我正在添加聚合物元素。我想在单击其(自己的)图像时删除元素(自我)。根据封装,我将不得不让 parent 删除 child 。但这也需要为母体生成聚合物元素(我在这里吗??)。 children.ad
现在如果我点击按钮 A,按钮 B 会显示 DropShadow 效果: Private Sub ButtonA_Click(ByVal sender As System.Object, ByVal
我尝试过这个,但它对我不起作用: char * remove_nl(char * newstr) { newstr = strdup(newstr); newstr[strlen(ne
我陷入了两难境地。我有一个图像,我想占据网页的背景。我希望它横跨屏幕的宽度和高度,并保持那个尺寸。当我使用 标签,我不知道如何将它拉伸(stretch)到没有白条的屏幕上。 wspace 和 hspa
Jade .foo .foo 结果 想要的结果 在 haml 中我会做类似 .foo>< 的事情但这在 Jade 中不起作用。我已经搜索并空手而归如何处理这个问题。我如何达到预期的结果
我是 Maven 的新手,当我尝试将我当前的项目从使用 Ant 转换为 -> 使用 Maven 时遇到了问题。 那个项目需要很多 Jar,我在 mvnrepository 上查找这些 jar 并将它们
我需要一个正则表达式来删除 xml 标记开头和结尾之间的空格。例如:有人创建 xml 并将其发送给我,这样我就可以验证、签名并发送到网络服务。 为此,我需要删除标签开头和结尾之间的空格: String
我写了几个方法来将项目添加到数组中,如果它们已经在数组中,它们将被忽略。在对数据结构做了一些研究之后,我意识到我可以通过简单地将它们放在一个集合中来摆脱重复(特别是因为我不关心对象的顺序)。然而,在玩
使用 HighCharts,我想移除 SVG 曲线上的抗锯齿。 到目前为止,我正在使用这个: $('path').each(function(i,j){$(j).attr('shape-renderi
由于某些奇怪的原因(黑色但不是黑色部分),我的 SeekBar 和拇指后面出现随机阴影。我该如何摆脱它? 我的搜索栏: 拇指.xml progress_appearance.xml(有一些
我有一个 Url,我想获取路径部分但没有尾随文件名。如果 Url 是 http://my.com/dir1/dir2/file.ext 那么我想获取 /dir1/dir2 . 我已经尝试了各种拆分(l
我有这个字符串: dataSourceURL = URL(string:"https://api.abc.com/api/p4/products?pid=uid8225&format=json&off
在我的网页中,我有一个菜单 (HorizontalPanel) 应该隐藏在页面的底部。为此,我尝试使用 RootLayoutPanel 类并在其中添加一个 south 小部件,我成功地做到了。但问
我是一名优秀的程序员,十分优秀!