我有几个二进制图像,我的任务是分割圆形的形状.圆圈不是完美的圆形圆圈,但它们看起来都像圆圈.以下是一些示例图像和我需要的内容:

从上面可以看出,左图像是原始图像,右图像是我需要做的.圆圈与其他形状相交,但我只想要圆圈,如红色所示.将需要用于关闭圆的虚线.在这种情况下,我可以在图像处理中做什么?
编辑:万一,上面的图像被打破,在这里:http://imageshack.us/photo/my-images/835/circleonly.jpg/
是否有图像分割的拆分和合并方法的实现?任何建议将不胜感激.
我一直在构建一个(非常)简单的OCR引擎.由于我试图对非常小(像素大小)的字符进行分类,我在分割方面遇到了一些困难.这是一个例子,经过尽力而为的图像范围阈值处理:
:
错误检测:
错误修正:
我不知道.因此这个问题:)
language-agnostic ocr opencv image-processing image-segmentation
我有一只手的X射线图像.我需要自动提取骨骼.我可以使用不同的技术轻松分割手.但我需要得到骨头并使用这些技术无济于事.有些骨头比其他骨头更亮,所以如果我使用阈值处理,其中一些骨头会消失,而其他骨骼则会变得更清晰.我想也许我应该只限制一个手的区域?是否可以限制不是正方形的投资回报率?哦,也许你有任何其他解决方案,建议?也许有一些像OpenCV这样的图书馆?任何帮助都会非常棒!
扩展:

原始图像 预期输出
我正在使用http://www.cis.upenn.edu/~jshi/software/Ncut_9.zip中的规范化剪切包 (在Windows 7上)
这曾经与Matlab2010a一起使用.但是我已升级到Matlab2013a(32位学生版),现在我收到以下错误:
Error using arpackc
Expect 2 output arguments
Error in eigs_new (line 240)
arpackc( aupdfun, ido, ...
Error in ncut (line 83)
[vbar,s,convergence] =
eigs_new(@mex_w_times_x_symmetric,size(P,1),nbEigenValues,'LA',options,tril(P));
Error in ncutW (line 9)
[NcutEigenvectors,NcutEigenvalues] =
ncut(W,nbcluster);
Error in NcutImage (line 18)
[NcutDiscrete,NcutEigenvectors,NcutEigenvalues]
= ncutW(W,nbSegments);
Error in demoNcutImage (line 25)
[SegLabel,NcutDiscrete,NcutEigenvectors,NcutEigenvalues,W,imageEdges]=
NcutImage(I,nbSegments);
Run Code Online (Sandbox Code Playgroud)
显然,该new_eigs()函数ncuts与最新的Matlab中的ARPACK版本不兼容.
eigs()函数的修改版本.为什么我不能只使用Matlab的内置eigs()而不是eigs_new()(它似乎工作).matlab cluster-analysis image-processing image-segmentation arpack
我正在使用OpenCV for java(但这与我猜不相关).我正在使用这里BackgroundSubtractorMOG2引用的(很差)类.我已经阅读并理解了Zivkovic关于算法的论文,您可以在这里找到.
BackgroundSubtractorMOG2在其构造函数中引入一个名为的参数history.它是什么,它如何影响结果?例如,你能指点我在纸上的参考吗?
从类源代码,第106行,据说alpha = 1/history.这意味着历史就是论文中的T参数,即(或多或少)构成训练集的帧数.
然而,它似乎并非如此.将构造函数中的值从10更改为500或更高,对最终结果没有影响.这就是我所说的:
Mat result = new Mat();
int history = 10; //or 50, or 500, or whatever
BackgroundSubtractorMOG2 sub = new BackgroundSubtractorMOG2(history, 16, false);
for (....) {
sub.apply(frame[i], result);
}
imshow(result); //let's see last frame
Run Code Online (Sandbox Code Playgroud)
我设定的历史无关紧要,无论是5,10,500,1000 - 结果总是一样的.然而,如果我改变了alpha价值(学习率)apply(),我可以看到它真正的影响力:
Mat result = new Mat();
float alpha = 0.1; //learning rate, 1/T (1/history?)
BackgroundSubtractorMOG2 sub = new BackgroundSubtractorMOG2(whatever, …Run Code Online (Sandbox Code Playgroud) 我输入的图像如下所示:
我喜欢以一种方式对图像进行分割,以获得仅包含水平垂直线的近似多边形.
我的第一种方法是霍夫分割,但我只能创建矩形对象.这不适用于第二张图像.
然后我尝试使用决策树:对于每个图像,我训练了一个决策树,其中包含所有像素的输入x和y位置以及黑/白分类.然后我只使用了n这棵树的第一层.使用这个新树,我对所有像素进行了预测.有时这很好用,但有时它没有.特别是树木深度因图片而异......
也许有人知道如何做到这一点?或者是否已有针对此用例的算法?
非常感谢你
问候
凯文
我正在尝试解决语义分段问题.根据实际约束,假阳性的标准和假阴性的标准是不同的.例如,如果像素被错误校正,则前景不太理想,而像素被错误校正为背景.如何在设置损失函数时处理这种约束.
computer-vision image-segmentation deep-learning keras tensorflow
将图像分割成N个超像素后,我需要指定与一个超像素相邻或不相邻的超像素,并为所有超像素确定这种关系。
[L,NumLabels] = superpixels(A,200);
Run Code Online (Sandbox Code Playgroud)
如何为每个超像素指定相邻的超像素?
更新资料
我已经尝试了@Cris Luengo介绍的解决方案。但是出现了以下错误:
B=imread('H.jpg');
[L,N] = superpixels(B,200);
glcms=graycomatrix(L);
k=glcms(:,50); %SupNum=50
[r,~]=find(k>0);
aa=find(r==50);
r(aa)=[];
Run Code Online (Sandbox Code Playgroud)
更新2 我按照MATLAB帮助中的说明进行操作,但对我不起作用。对于SupNum = 8,产生了以下结果:
matlab image-processing image-segmentation matlab-coder superpixels
在对图像进行错误级别分析的过程中,我想使用OpenCV(仅显示单个图像而不显示差异)来突出显示像素变化。我知道输出图像的像素级值,但不确定将它们分组在一起并为其指定形状的方法(下面的示例使用形状指定像素变化)。我想知道是否可以检测到像素较浅的圆圈并将其分组并为像素添加分组形状
输入图片:
结果图像:
opencv ×4
image ×2
matlab ×2
arpack ×1
c# ×1
c++ ×1
java ×1
keras ×1
matlab-coder ×1
ocr ×1
polygon ×1
python ×1
python-2.7 ×1
superpixels ×1
tensorflow ×1