Questions tagged «computer-vision»

计算机视觉包括处理,分析,图像和高维数据以形成对场景或图像的高级理解和识别的方法。

6
不同材质的图像分割问题
嗨,简历/模式识别社区, 关于图像的分割,我遇到了一个严重的问题。场景是炉子里的气氛,使我发疯。而且我需要在短时间内(<10秒)而不是仅在一种特殊情况下检测不同材料(玻璃,陶瓷,Al,Ir ...)的物体轮廓。我还需要代码的连续像素行中的轮廓。因此,还需要使用链代码或所谓的边界/轮廓跟随,因此开孔不好。在背景中会不时出现非线性噪声,大约是灰尘,颗粒或其他一些东西。 欢迎使用Matlab或OpenCV建议。 为了更加清楚,我发布了目标的另一个图像和一个半透明的对象,还需要对其进行检测。还需要注意其他示例。 正如您在图像#1中看到的那样,图像的右侧部分和恒星的外轮廓附近(即物体)存在粒子。而且总体对比度不是很好。对象本身位于地下,与轮廓检测无关。图像#2显示了半透明的物体,这也是可能的。 我想找到该物体的轮廓/周长,就像在下一个屏幕(红线)上一样。两个矩形(黄色)标记了起点(左侧)和终点(右侧)。蓝线是可忽略的。 起初我以为我可以只用过滤器解决那种肮脏的气氛。但是经过大量的投入时间,我才意识到,为了提高前景和背景的对比度,我必须大幅度消除或减少噪音。我尝试了很多方法,例如直方图均衡,自适应Otsu均衡,线性滤波器(例如高斯),非线性滤波器(中值,扩散),活动轮廓,k均值,Fuzzy-c-means以及纯Canny边缘检测结合形态运算符。 坎尼:粒子和大气正在造成孔洞,但是我需要物体的完整轮廓。仍然以形态算子的闭合,扩张还不够好。由于滞后作用,Canny仍然是我研究过的所有方法中最好的结果。 活动轮廓线:它们也可以在边缘/渐变上工作,在对象内部初始化后它们的行为完全疯狂,这可能是由于边缘贴图导致“开放”对象引起的。据我所知,轮廓必须闭合。尝试了不同的衍生产品(GVF / VFC /经典蛇)。 k均值:由于有雾的背景,结果包括炉内气氛。对于模糊C均值也是如此。由于将对象与背景分离,我选择了两个群集。簇越多,结果越弱。 直方图/ Otsu:由于灰度强度非常接近(恕我直言!),它会将对象与背景合并。尝试使用本地和全局方法。 滤镜:尤其是GLPF或其他LPF会弄脏边缘,效果不是很好,甚至不会减少有雾的气氛。 非线性滤镜保留边缘。它们中的大多数都花很长时间计算大图像。现在使用快速双边过滤器。结果见下文。 因此,没有一种方法足以满足后处理步骤的需要,因为对象段的获得结果与现有算法的竞争性较差。该现有算法非常本地化,因此适用于这种非常特殊的情况。 所以我问你,如果我完全错过了什么...我不知道如何加工以及如何获得良好的轮廓结果而又没有间隙或孔。 CCD和物理环境?提前致谢! 到目前为止的最后一种方法(经过一整夜的MO实验): 双边过滤器(保留边缘,但平滑均匀区域) Canny(Sigma = 2,Threshold = [0.04 0.08]) 形态运算(MO): bwareopenclosing, remove和bridge bwlabel仅选择轮廓的周长,以消除不必要的噪音。尚无更新的屏幕截图,但适用于明星。玻璃杯有一个与外部轮廓相连的内部轮廓,也可以在下面的屏幕截图中看到。 因此,恐怕我需要一种特殊的算法来遍历外部轮廓。这将是对邻居的一些顺时针/逆时针查找。如果存在拐角,则可以切换顺时针/逆时针的步骤。如果有间隙,请增加半径并再次查看。如果存在以下两个或两个以上的观点,请选择与前一个观点相同的观点。您认为轮廓跟随算法有意义吗?

3
OpenCV / C ++根据它们之间的距离连接附近的轮廓
我必须根据它们之间的距离连接图像中的附近轮廓,该距离指定是否要连接轮廓。 现在这里已经有一个关于同一问题的问题,https://stackoverflow.com/questions/8973017/opencv-c-obj-c-connect-nearby-contours,但是在这里他将所有轮廓合并为一个轮廓。这个我不要 我认为opencv中没有为此功能,但是您可以为此建议一个算法。我的应用程序如下所示: 我正在检测手,因此我使用皮肤检测算法来确定它们,但是由于我的皮肤不是白色,可能是由于某些情况下的照亮情况导致肘部轮廓破裂。因此,我希望连接附近的轮廓,但不要全部连接(因为我的两只手都在轮廓中。)(我的意思是从肩膀到手掌。) 此外,我认为通过使用一些边缘检测,我将获得我的手的边界,并检测该边界内的某些补丁是否被检测为皮肤,然后将该边界内的整个区域检测为皮肤,但是我不确定如何执行此操作部分。 任何帮助将不胜感激。提前致谢 样本图片: 在此图像中,我想连接距离(小于40像素)的点(8个连接点),以便将左手作为单个轮廓 我的目的是只获得手的轮廓(我不在乎其他任何区域)

2
计算机视觉与图像处理之间的(清晰)界限
我从事计算机视觉和图像处理已有几年的经验,我相信我不再是一个完整的初学者。 尽管如此,这些年来,对于我的作品中的任何特定部分,我还是很难分辨它是否主要与计算机视觉有关,还是与图像处理有关。我只是看不到界线-在工作,学习和研究时,我会同时阅读带有两个关键字的参考资料。 因此,我对计算机视觉和图像处理领域的定义很感兴趣,重点是这些领域的比较(差异和重叠)。 此外,我认为举一个(概念上或现有的)实际应用程序,项目和工作示例来处理/利用将是有价值的: 仅(或大部分)计算机视觉工具和想法 仅(或大部分)图像处理工具和想法 来自两个领域的工具和思想的结合 与支付给什么使得它特别关注一个而不是其他的,或者是什么使得这两个。 我了解这些字段之间的相关性很高,“线”可能不像该问题所要求的那么清晰,但我希望您了解该问题的重点不是设计一个简单的分类决策规则(我)工作,但可以更好地理解这些领域的重点和目标。同样,欢迎提供任何其他带有我的问题音调的附加信息,即使我没有明确要求也可以。

2
边缘检测器检测到的连接边缘
我有一个从Canny边缘检测器获得的二进制图像。在中心没有很好地检测到边缘,我需要加入它们。边缘的连接取决于方向和邻域。如果顶点低于阈值(例如小于5像素距离),则需要连接顶点。如果我的几乎线性特征定位良好,则应放宽此阈值。(这是最好的情况。) 我尝试了霍夫变换,但对我来说不起作用,因为我没有直线。膨胀和侵蚀也不好;他们使图像更加混乱。 我尝试的方法是先检测顶点和节点(在MATLAB中使用bwmorph),然后将叶子作为单独的功能。这样做如下: 在3x3窗口中扫描,寻找邻居。 遍历完整的连接对象。 尝试拟合一条线(或者可能是二次多项式)。 逐个功能检查是否值得连接。 实现不是很简单,因为需要连接顶点的决策部分比较棘手。

2
检测图像中蜿蜒的河流
我有表面:ž 我(X ,ÿ )与每个表面上的测量的属性(变量):一个我(X ,ÿ )。大多数表面将在整个表面上具有随机分布的属性,但是某些表面(有趣的表面)将显示出蜿蜒的河流模式:ññnž一世(x ,y)ž一世(X,ÿ)z_i(x,y)一种一世(x ,y)一种一世(X,ÿ)a_i(x,y) 我需要您的帮助,以提出一个可以告诉我们表面中最有可能具有这种图案的测量方法。ññn 如下所示,有许多可能具有相同直方图的地图;因此该度量需要“奖励”空间连续性。为了说明这一点,我创建了一个随机图像,其直方图与河流图像几乎相同: 因此,图像统计信息熵可能只是解决方案的一部分。 这是一个没有蜿蜒河流图案的图像示例: 我的图像是合成的(在Matlab中制作)。在现实生活中,没有图案的图像可能会以相似值的小斑点形式具有更多的空间连续性。 以下是灰度图像:

4
基本的hsb皮肤检测,霓虹灯照明
我希望这是问的正确地方。否则,请为我的错误感到抱歉,并请愿为我提供一个更好的网站。 我正在尝试使用一定范围的hsb图像实现一个超级简单的皮肤检测器。我正在这里和这里描述的方法。 我尝试使用网络摄像头中的视频源。如果我使用阳光照明,效果会很好(不是很好,但是很好),但是在霓虹灯下..那是一团糟。检测到很多白色区域,到处都有很多噪音。 为什么? 我正在使用第二个来源中描述的算法: 将图像转换为HSV颜色空间 将白色放在0 <H <38的范围内 扩张过滤器 腐蚀过滤器 模糊滤镜

2
如何更改公式以检测各个角度的条形码?-MATLAB
如何更改公式以检测各个角度的条形码? rgb = imread('barcode4.jpg'); % Resize Image rgb = imresize(rgb,0.33); figure(),imshow(rgb); % Convert from RGB to Gray Igray = double(rgb2gray(rgb)); % Calculate the Gradients [dIx, dIy] = gradient(Igray); B = abs(dIx) - abs(dIy); % Low-Pass Filtering H = fspecial('gaussian', 20, 10); C = imfilter(B, H); C = imclearborder(C); figure(),imagesc(C);colorbar


2
点云中的配置文件匹配
甲点云被使用统一的随机函数生成(x,y,z)。如下图所示,正在研究一个平面相交平面(轮廓),该平面与目标轮廓(即在左下角给出的)最佳(即使不是精确的)相匹配。所以问题是: 1-如何target 2D point map通过point cloud考虑以下注意事项/条件找到给定的匹配? 2-那么什么是坐标/方向/相似度等? 注1:感兴趣的轮廓可以沿轴旋转任何位置,也可以具有不同的形状,例如三角形,矩形,四边形等,具体取决于其位置和方向。在下面的演示中,仅显示了一个简单的矩形。 注2:可以将公差值视为点到轮廓的距离。为了在下图中证明这一点,假设公差是0.01最小尺寸的(~1)乘积tol=0.01。因此,如果我们删除其余部分并将所有剩余点投影在要研究的轮廓平面上,那么我们将能够检查其与目标轮廓的相似性。 注意3:可以在“ 点模式识别”中找到一个相关主题。

3
如何从同形矩阵计算相机姿态?
假设我只使用一台校准相机。从这台摄像机,我得到图像A和B。我知道A和B之间的单应性,这是通过OpenCV的findHomography()计算得出的。 我知道图像A的姿态(旋转矩阵R和平移矢量t),并且我需要图像B的姿态。一旦获得它,我想我将能够计算后续图像的每一个进一步的姿态。 您知道计算B的姿势的实现吗?我在网上找到了几篇文章,但找不到易于实施的解决方案...

4
如何使用OpenGL检测二进制图像中的角?
我有二进制160x120图像,例如: 我想检测那些白色斑点的角落。它们以前是通过数学形态来封闭的,因此不应有任何内角。在这种情况下,我想要16个角,例如: 我的第一次尝试是使用一些OpenCV函数,例如goodFeaturesToTrack或FAST,但是它们特别慢(而且FAST非常不稳定)。我的想法是在GPU上进行这样的计算,因为我的源图像来自它。我在网上寻找有关如何编写此类着色器的想法(我使用的是OpenGL ES 2.0),但没有发现任何具体的想法。知道如何启动这样的算法吗?

4
从书架图像中切片和识别书名和作者
出于我自己的学习目的,我正在尝试开发一种算法,该算法将列出书,并给出如下书架的图像: 第一步是将图像切成单独的书。 我在Mathematica中的算法是: img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"] 做一个基本的边缘检测和 删除文本并尝试保持长行 edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5] 然后删除不需要的水平线 lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]] Show[img, Graphics[{Thick, Orange, Line /@ lines}]] 但是结果却不尽人意: 我的问题是: 我该如何改善它以获得更好的结果? 有更聪明的方法吗? 我应该进一步处理图像以提高(后期)OCR阶段的准确性吗? 如何使用颜色信息改善分割效果?

4
关于工业机器视觉系统中软件与机械/光学之间的权衡取舍,有什么参考吗?
我用一个简化的例子来解释我的问题。 我可以设计一个工业视觉系统来自动检查具有以下主要要求的物品: 一件好作品的图像必须为黑色背景,并且该作品必须为灰色。 缺陷必须在灰色区域内显示为白色区域。 这些要求大大简化了系统的软件部分:为了将某项归类为缺陷,算法仅对白色像素进行计数。 但是,为了获得这种简单的算法,我必须非常擅长设计系统的照明/光学/机械部分,并且该部分的成本可能会高于软件。 也许以前我读过这样的句子:“在机制上尽可能多,而在软件上尽可能少”。在我看来,这是在1990年代(或1980年代)的一本关于实用机器视觉的书中,但我找不到适当的引用/参考。

2
根据检测到的线计算单应性
我知道您可以使用“完美模型”和图像点之间的对应点来计算图像到相机平面的单应性。 我正在为足球场/场地做这件事,并且使用边缘检测来找到球场中的白线。 但是相机不会(总是)覆盖所有的俯仰,所以我看不到所有的角...而且我只有角是模型中100%的已知点(没有其他可分辨的点)。 因此,问题在于,除非这条线与另一条线相交并形成一个角,否则我只会知道该线的图像点,而不是模型中相应的“完美/真实世界”坐标。 我有什么方法可以使用检测到的线来计算单应性,甚至只是一组候选单应性,即使检测到的线彼此不相交并创建拐角? 示例图像,显示了俯仰,我们的视野以及可以知道相应的真实世界/模型坐标(绿色圆圈)的俯仰点,以及2条直线的示例,由于在我们的视野中,它们可能完全没有用,我不知道他们在音高对应的真实世界/模型中确切在哪一点开始或停止: 红线是我要使用的线的示例,但我不知道它们的真实坐标,并且很难估计它们,因为根据相机的姿势,对应点可能在“任何地方”。

4
比例和旋转不变模板匹配
我正在寻找缩放和旋转不变模板匹配的方法。我已经尝试过一些,但是对于我的示例来说,它们并没有那么好用,或者永远无法执行。SIFT和SURF特征检测完全失败。我还尝试实现Log-Polar模板匹配功能,但我从未完成(不知道确切的操作方法)。 在这些文章中(第一个是德语) http://cvpr.uni-muenster.de/teaching/ss08/seminarSS08/downloads/Wentker-Vortrag.pdf http://www.jprr.org/index.php/jprr/article/viewFile/355/148 我了解了该方法。绘制极坐标是可行的,但我不知道它是否正确。图片看起来像这样。 source_log_polar.png http://www.shareimages.com/images/pics/0/0/3/62394-pZSfl5WenZysnpyVnKg-source_log_polar.png 在用OpenCV的模板匹配功能匹配这两个图像后,我得到了结果 现在我不继续了。 我的模板始终是构建蓝图和蓝图本身的简单符号。这些符号的大小和方向可以不同。 例如我的简单蓝图: 还有我的模板 在此示例中,只有一个模板,但是在蓝图中,它应该找到所有出现的位置,甚至包括具有大小和/或方向的出现位置。 有谁有办法解决这个问题? 编辑: 对Andrey的方法的补充。径向轮廓的距离捕获算法。(使用EmguCV) private float[] getRadialProfile( Image<Gray, byte> image, Point center, int resolution ) { var roi = image.ROI; if ( !roi.Contains( center ) ) { return null; } var steps = resolution; var degreeSteps = 360 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.