Tag: 计算机视觉

C#上的边缘检测

我有这样的黑白图像(颜色覆盖是我的,可以删除): 我需要弄清楚所示手的边缘,我该怎么做? 我目前的算法: List edgePoints = new List(); for (int x = 0; x < largest.Rectangle.Width && edgePoints.Count == 0; x++) { //top for (int y = 0; y 3 && edgePoints.Count == 0; y++) { if (colorGrid[x, y].ToArgb() == Color.White.ToArgb() && colorGrid[x, y – 1].ToArgb() == Color.White.ToArgb() && colorGrid[x, y – 2].ToArgb() == Color.White.ToArgb() […]

Hough变换问题

我用这种方式在C#中实现了Hough Transform: List forme = new List(); forme.Add(new Point(260, 307)); forme.Add(new Point(268, 302)); forme.Add(new Point(273, 299)); forme.Add(new Point(279, 295)); forme.Add(new Point(285, 292)); forme.Add(new Point(291, 288)); forme.Add(new Point(298, 283)); forme.Add(new Point(305, 280)); forme.Add(new Point(312, 277)); forme.Add(new Point(319, 274)); forme.Add(new Point(325, 271)); forme.Add(new Point(333, 268)); forme.Add(new Point(340, 264)); forme.Add(new Point(350, 259)); forme.Add(new Point(356, 256)); int width = […]

比较2图像的焦点

我正在尝试开发对象检测算法。 我打算比较2个不同焦距的图像。 一个正确聚焦在物体上的图像和一个正确聚焦在背景上的图像。 通过阅读有关自动对焦算法 。 我认为它可以通过对比度检测无源自动对焦算法来完成。 它适用于传感器上的光强度。 但我不确定图像文件中的光强度值是否与传感器的值相同。 (它不是RAW图像文件.jpeg图像。)jpeg图像中的光强度值是否与传感器上的相同? 我可以用它来检测对比度检测的焦点正确性吗? 有没有更好的方法来检测哪个图像区域正确聚焦在图像上?

扫描图像以查找矩形

我正在尝试扫描一个恒定大小的图像,并在其中找到绘制的矩形。 矩形可以有任何尺寸,但只有红色。 这不是问题的起点。 我将使用已经编写的函数,稍后我会将其用作伪代码调用代码逻辑。 Rectangle Locate(Rectangle scanArea); //扫描给定扫描区域中的矩形。 如果未找到rectagle,则返回null。 我的逻辑是这样的: 使用Locate()函数查找第一个初始红色矩形,并将完整图像大小作为参数。 现在,划分其余区域,并继续递归扫描。 这个算法逻辑的要点是你永远不会检查已经检查过的区域,并且你不必使用任何条件,因为scanArea参数总是一个你之前没有scanArea的新区域(这要归功于划分技术)。 除法过程如下所示:当前找到的矩形的右侧区域,底部区域和左侧区域。 这是一个说明该过程的图像。 (白色虚线矩形和黄色箭头不是图像的一部分,我只是为了插图而添加它们。)如您所见,一旦发现红色矩形,我会一直扫描它的右边,左下角。 递归。 所以这是该方法的代码: List difList=new List(); private void LocateDifferences(Rectangle scanArea) { Rectangle foundRect = Locate(scanArea); if (foundRect == null) return; // stop the recursion. Rectangle rightArea = new Rectangle(foundRect.X + foundRect.Width, foundRect.Y, (scanArea.X + scanArea.Width) – (foundRect.X + foundRect.Width), (scanArea.Y […]

像素坐标到3D线(opencv)

我在屏幕上显示的图像通过cvInitUndistortMap和cvRemap(已完成相机校准)未失真,用户点击图像中的一个特征。 所以我有特征的(u,v)像素坐标,我也有内在矩阵和失真矩阵。 我正在寻找的是相机/真实世界坐标中的3D线的等式,用户点击的特征必须在该等式上。 我已经在相机的图像平面和特征之间有垂直距离,所以我可以将它与上述方程式结合起来,给出空间特征的(X,Y,Z)坐标。 听起来很简单(反向内在矩阵或什么?)但我无法在任何地方找到逐步说明。 C ++或C#代码首选。

validation图像序列

问题 问题塑造 图像序列的位置和大小是固定的并且事先已知(它没有缩放 )。 它将非常短,最多20帧并且处于闭环状态。 我想validation(由按钮点击驱动的事件),我以前见过它。 可以说我有一些图像序列,如: http://img514.imageshack.us/img514/5440/60372aeba8595eda.gif 如果看到,我想看到与之关联的ID,如果没有 – 它将被分析并添加为已经看到的图像序列的新实例。 我有很长一段时间,但我承认,这可能是一个难题。 我似乎很难把这些放在一起,有人可以协助(在C#中)吗? 限制和用途 我并没有尝试重新创建版权检测系统,就像Youtube实施的内容ID系统一样(Margaret Gould Stewart在TED( 链接 ))。 图像序列可以像(.gif)文件一样被考虑,但它不是,并且没有直接的方法来获取二进制文件。 可以使用类似的方法,以避免“图像共享数据库”中的重复,但它不是我想要做的。 我的努力 高斯模糊 Mathematica函数生成高斯模糊内核: getKernel[L_] := Transpose[{L}].{L}/(Total[Total[Transpose[{L}].{L}]]) getVKernel[L_] := L/Total[L] 事实certificate,使用2遍矢量内核,然后使用矩阵内核更有效。 你的是基于Pascal三角形不均匀的行: {1d/4, 1d/2, 1d/4} {1d/16, 1d/4, 3d/8, 1d/4, 1d/16} {1d/64, 3d/32, 15d/64, 5d/16, 15d/64, 3d/32, 1d/64} 数据输入,散列,灰度和灯箱 源位的示例,可能有用: 已知矩形周围的灯箱:FrameX 使用MD5CryptoServiceProvider获取已知矩形atm内的内容的md5哈希值。 使用ColorMatrix灰度图像 来源示例 源示例( GUI […]

无法加载文件或程序集“Magick.NET-x86.DLL”或其依赖项之一

我使用了Magick.NET,它是ImageMagick的.NET包装器,它会在客户端计算机上抛出上述错误。 它在我的机器上工作正常。 我没有安装ImageMagick所以我根本无法理解我在客户机上需要做什么。 我安装了VS 2012。 此外,Magick.NET包含ImageMagick,我认为它使用C ++ / CLI并将.NET接口暴露给本机ImageMagick,所有这些都在一个DLL中。 那么它需要什么DLL呢? (我刚刚发现了这个错误,所以发布了我找到的解决方案。)

使用OpenCV检测来自一个图像的对象是否在另一个图像中

我有一个包含对象的示例图像,如下图中的耳环: View post on imgur.com 然后,我有一个大的候选图像集,我需要确定哪一个最有可能包含对象,例如: View post on imgur.com 所以我需要为每个图像生成一个分数,其中最高分对应于最可能包含目标对象的图像。 现在,在这种情况下,我有以下条件/约束来处理/周围: 1)我可以获得不同角度的多个样本图像。 2)样本图像可能与候选图像处于不同的分辨率,角度和距离。 3)有很多候选图像(> 10,000),所以它必须相当快。 4)我愿意为速度牺牲一些精度,所以如果这意味着我们必须搜索前100名而不是前10名,这很好,可以手动完成。 5)我可以手动操作样本图像,例如勾勒出我想要检测的对象; 候选图像不能手动操作,因为太多了。 6)我根本没有OpenCV或计算机视觉的真实背景,所以我从头开始。 我最初的想法是首先在样本图像中围绕对象绘制粗略轮廓。 然后,我可以识别候选图像中的对象和角落的角落。 我可以分析每个角落周围的像素,看看它们是否看起来相似,然后按每个角落的最大相似度得分的总和进行排名。 我也不确定如何量化类似的像素。 我想只是他们的RGB值的欧几里德距离? 问题在于它忽略了对象的中心。 在上面的例子中,如果耳环的角落都在金框附近,那么它就不会考虑耳环内的红色,绿色和蓝色gem。 我想我可以通过查看所有角对并通过沿着它们之间的线采样一些点来确定相似性来改进这一点。 所以我有几个问题: A)这种思路一般是否有意义,或者是否有一些我缺失的东西? B)我应该调查OpenCV的哪些特定算法? 我知道有多个角点检测算法,但我只需要一个,如果差异都在边缘上进行优化,那么我最好用。 C)使用算法的任何示例代码都有助于我的理解? 我的语言选择是Python或C#。

续 – 车牌检测

继续这个主题: 什么是车牌检测的好算法? 我已经开发了我的图像处理技术,以尽可能地强调车牌,总体而言我很满意,这里有两个样本。 现在是最困难的部分,实际上是检测车牌。 我知道有一些边缘检测方法,但我的数学很差,所以我无法将一些复杂的公式转换成代码。 到目前为止,我的想法是循环遍历图像中的每个像素(对于基于img宽度和高度的循环)。从每个像素与颜色列表进行比较,从中检查算法以查看颜色是否保持区分许可证盘子白色,和黑色的文字。 如果这恰好是真的,则这些像素被内置到内存中的新位图中,然后一旦停止检测到该模式就执行OCR扫描。 我很欣赏这方面的一些意见,因为它可能是一个有缺陷的想法,太慢或太密集。 谢谢

图像焦点计算

我正在尝试为一些测试自动化工作开发图像聚焦算法。 我选择使用AForge.net,因为它看起来像一个很好的成熟.net友好系统。 不幸的是,我似乎无法从头开始找到有关构建自动对焦算法的信息,所以我给了它最好的尝试: 拍照。 应用sobel边缘检测滤波器,生成灰度边缘轮廓。 生成直方图并保存标准开发。 将相机移近主体一步并拍摄另一张照片。 如果标准开发小于前一个,我们将获得更多关注。 否则,我们已经超过拍摄照片的最佳距离。 有没有更好的办法? 更新:顺便说一下,这有很大的缺陷。 当我超越最佳焦点时,我的“焦点图像”价值继续增长。 你期望抛物线函数看距离/焦点值,但实际上你会得到一些更对数的东西 更新2:好的,所以我回到这个,我们正在探索的当前方法给出了一些已知的边缘(好吧,所以我确切地知道图片中的对象是什么),我做了手动像素强度比较。 随着结果图变得越来越陡峭,我得到了更多关注。 一旦核心算法从matlab移植到c#(是的,matlab ..:S),我就会发布代码 更新3:yay最终更新。 又回来了。 最终的代码如下所示: 第1步:从图像列表中获取图像(我通过聚焦点拍摄了一百张照片) 第2步:找到我正在聚焦的物体的边缘(在我的情况下,它是一个总是在同一个地方的矩形物体,所以我裁剪出一个边缘的HIGH和NARROW矩形) 第3步:获取该裁剪图像的Horizo​​ntalIntensityStatistics(Aforge.net类)。 第4步:获取直方图(灰色,在我的情况下) 步骤5:找到直方图值的导数 第6步:当你的坡度最大时,就是你处于最集中的地方。