标签: feature-detection

非常大的图像中的记忆效率线缝合

背景

我使用Synthetic Aperture Radar卫星的非常大的数据集.这些可以被认为是一侧10k像素量级的高动态范围灰度图像.

最近,我一直在开发Lindeberg尺度空间脊检测算法的单尺度变体的应用,用于检测SAR图像中的线性特征.这是对使用方向滤波器或使用Hough变换的改进,这两种方法以前都使用过,因为它的计算成本低于其中任何一种.(我将在4月份的JURSE 2011上展示一些最新成果,如果有帮助,我可以上传预印本).

我目前使用的代码生成一个记录数组,每个像素一个,每个记录描述矩形到像素右下角的一个脊段,并由相邻的像素限定.

struct ridge_t { unsigned char top, left, bottom, right };
int rows, cols;
struct ridge_t *ridges;  /* An array of rows*cols ridge entries */
Run Code Online (Sandbox Code Playgroud)

在一个条目ridges包含脊段如果正好有两个的top,left,rightbottom具有范围值0 - 128.假设我有:

ridge_t entry;
entry.top = 25; entry.left = 255; entry.bottom = 255; entry.right = 76;
Run Code Online (Sandbox Code Playgroud)

然后我可以找到脊段的开始(x1,y1)和结束(x2,y2):

float x1, y1, x2, y2;
x1 = (float) col + (float) entry.top / 128.0;
y1 = (float) …
Run Code Online (Sandbox Code Playgroud)

c scalability image-processing feature-detection satellite-image

12
推荐指数
1
解决办法
735
查看次数

如何从OpenCV Python中的特征匹配中获取像素坐标

我需要获取功能匹配器在提供的代码中选择的像素列表xy坐标.我正在使用Python和OpenCV.谁能帮我?

img1=cv2.imread('DSC_0216.jpg',0)
img2=cv2.imread('DSC_0217.jpg',0)

orb=cv2.ORB(nfeatures=100000)
kp1,des1=orb.detectAndCompute(img1,None)
kp2,des2=orb.detectAndCompute(img2,None)

img1kp=cv2.drawKeypoints(img1,kp1,color=(0,255,0),flags=0)
img2kp=cv2.drawKeypoints(img2,kp2,color=(0,255,0),flags=0)
cv2.imwrite('m_img1.jpg',img1kp)
cv2.imwrite('m_img2.jpg',img2kp)

bf=cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches=bf.match(des1,des2)
matches=sorted(matches, key= lambda x:x.distance)
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing matching feature-detection

12
推荐指数
1
解决办法
1万
查看次数

实施Harris角点探测器

我正在实施一个Harris角点探测器用于教育目的,但我坚持使用哈里斯响应部分.基本上,我在做的是:

  1. 在x和y方向上计算图像强度梯度
  2. 模糊输出(1)
  3. 计算哈里斯对(2)输出的响应
  4. 在3x3邻域和阈值输出中抑制(3)的输出中的非最大值

1和2似乎工作正常; 然而,随着哈里斯的反应,我得到的值非常小,没有任何一点达到阈值.输入是标准的户外摄影.

[...]
[Ix, Iy] = intensityGradients(img);
g = fspecial('gaussian');
Ix = imfilter(Ix, g);
Iy = imfilter(Iy, g);
H = harrisResponse(Ix, Iy);
[...]

function K = harrisResponse(Ix, Iy)
    max = 0;
    [sy, sx] = size(Ix);
    K = zeros(sy, sx);
    for i = 1:sx,
        for j = 1:sy,
            H = [Ix(j,i) * Ix(j,i), Ix(j,i) * Iy(j,i)
                Ix(j,i) * Iy(j,i), Iy(j,i) * Iy(j,i)];
            K(j,i) = det(H) / trace(H);
            if K(j,i) > max,
                max = K(j,i);
            end
        end …
Run Code Online (Sandbox Code Playgroud)

algorithm matlab computer-vision feature-detection corner-detection

11
推荐指数
3
解决办法
3万
查看次数

从不同的物体角度找到一个好的单应性?

我正在使用特征提取(筛选,orb)进行对象检测.

我想从对象的不同视角(训练图像)中提取ORB特征,然后将它们与查询图像进行匹配.

我面临的问题是:如何从不同角度的关键点创建一个良好的单应性,这些关键点当然具有不同大小的图像?

编辑

我正在考虑为每个火车图像创建一个单应性,然后说3-4个匹配,然后计算一些"均值"单应...

例如,当您从每个火车图像中说出1-2个匹配时,会出现问题,此时您无法创建甚至1个单应性

创造单应性的代码

  //> For each train images with at least some good matches ??
  H = findHomography( train, scene, CV_RANSAC );
  perspectiveTransform( trainCorners, sceneCorners, H);
Run Code Online (Sandbox Code Playgroud)

c++ opencv computer-vision feature-detection orb

11
推荐指数
1
解决办法
1882
查看次数

如何检测特定角度的角落

我有一个等边三角形和一个矩形的图像:
等边三角形和矩形
我想只检测三角形的3个角.我按照OpenCV Harris角点检测器教程看到三角形的所有角点都有阈值= 80(当矩形阈值的所有4个角点= 255时).但我没有找到门槛和学位之间的联系.

例如,如何找到[555]度范围内的角落?
这是输出Mat http://pastebin.com/raw.php?i=qNidEAG0

P/s:我对CV很新,希望你能提供更多细节!

opencv image-processing feature-detection corner-detection

11
推荐指数
1
解决办法
6182
查看次数

Android自动裁剪相机拍摄的图像

我正在寻找Android中的某种自动修剪/裁剪功能.其中检测捕获图像中的对象并在对象周围创建方框以进行裁剪.我在android中找到了人脸检测api,但我的问题是捕获的图像是文件/页面而不是人脸,所以如何从捕获的图片中检测到文档或任何其他对象.

我正在考虑用于物体检测或某些颜色检测的任何算法.有没有可用的api或库.

我试过以下链接但没有找到任何所需的输出.

自动查找和裁剪相关图像区域(Java/Android)

https://github.com/biokys/cropimage

任何小提示也会对我有所帮助.请帮忙.提前致谢

android crop image-processing feature-detection

11
推荐指数
1
解决办法
7441
查看次数

使用无专利描述符进行特征检测

我需要特征检测算法.我厌倦了在网上冲浪,除了SURF示例之外什么都没有,并提示如何做到这一点,但我没有找到除SIFT或SURF等专利描述之外的例子.

任何人都可以写使用的一个例子自由特征检测算法(如ORB/BRISK [据我理解SURF和FLAAN是非游离 ])?

我正在使用OpenCV 3.0.0.

algorithm opencv image-recognition feature-detection opencv3.0

11
推荐指数
1
解决办法
8520
查看次数

OpenCV ORB检测器找到的关键点非常少

我正在尝试使用ORB关键点检测器,它似乎返回比SIFT检测器和FAST检测器少得多的点.

此图显示了ORB检测器找到的关键点:

在此输入图像描述

此图像显示了SIFT检测阶段找到的关键点(FAST返回相似数量的点).

在此输入图像描述

具有这么少的点导致图像之间的特征匹配结果非常差.我现在只是对ORB的检测阶段感到好奇,因为这似乎是我得到了不正确的结果.我已尝试使用带有默认参数的ORB检测器以及下面详述的自定义参数.

为什么会有这么大的差异?

码:

orb = cv2.ORB_create(edgeThreshold=15, patchSize=31, nlevels=8, fastThreshold=20, scaleFactor=1.2, WTA_K=2,scoreType=cv2.ORB_HARRIS_SCORE, firstLevel=0, nfeatures=500)
#orb = cv2.ORB_create()
kp2 = orb.detect(img2)
img2_kp = cv2.drawKeypoints(img2, kp2, None, color=(0,255,0), \
        flags=cv2.DrawMatchesFlags_DEFAULT)

plt.figure()
plt.imshow(img2_kp)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python opencv computer-vision feature-detection

11
推荐指数
2
解决办法
1万
查看次数

使用OpenCV SVM进行对象检测

我无法在互联网上的某个地方找到好的解释.有太多的东西,而不是找到做什么,我变得更加困惑.

我的目标:创建一个Android应用程序,使用相机实时检测对象(我的对象是方向盘和汽车轮胎.)

到现在为止我尝试了haar分类器,但很难训练,花了很多时间而且无法正确训练所以我决定寻找另一种方法来实现我的目标.

现在我发现了特征检测器和SVM培训.我的问题是:

1:我应该使用哪种算法(SURF,ORB,FREAK等)?

2:你怎么看待HOG + Bag-Of-Words?

3:如果有的话,您会告诉我如何训练SVM或提供链接吗? - 我没有找到任何关于此的教程.我一直在寻找,但我的时间有限,我决定问.

4:哪种算法会得到最好的结果?

5:我应该使用Android NDK在本机中实现它还是与Java实现没有太大的区别?

如果您有任何教程或参考资料,请将其添加到您的答案或评论中.很抱歉这个问题很长,因为我说我的时间有限(这是一个学校项目.)而且我认为如果人们能够在一个地方找到这些答案会很好.我会很感激每一个答案,即使它不是一个完整的答案.先感谢您!

android opencv object-detection feature-detection opencv4android

10
推荐指数
1
解决办法
2818
查看次数

ORB的实施

我刚刚使用了ORB的开源实现.

如何通过添加新模块来进一步实现ORB?

为了获得比使用ORB更好的结果,我能做些什么呢?

我正在考虑使用RANSAC来消除异常值并获得更好的结果.

我们在这一点上等待进一步实施ORB的想法.

有关圆形和三角形的Homography实现的任何想法?

feature-extraction feature-detection orb feature-descriptor

10
推荐指数
0
解决办法
418
查看次数