opencv algoritmo de detecção RÁPIDO

A descrição acima se trata de detecção de canto, é na verdade um pontos característicos imagem Canto, para uma imagem, os pontos característicos são divididos em três tipos, incluindo uma vantagem, e os pontos de foco na opencv, com detecção de canto , o seguinte método total de detecção do ponto de imagem característica

O jejum
SURF
o ORB
BRISK O
KAZE
AKAZE
MESR
GFTT Boa Tack recurso para
Bob manchas
ESTRELA
agast
  seguida, respectivamente, sobre o qual um algoritmo de detecção de recurso de imagem, mas primeiro exige uma compreensão de uma estrutura de dados de opencv, estrutura KeyPoint, a definição da estrutura de cabeçalho de como se segue:

classe KeyPoint

{

Point2f pt; // coordenada do ponto recurso de imagem

tamanho do flutuador; // bairro característica de diâmetro

ângulo flutuador; // sentido do ponto de recurso, um valor de [zero, $ 360), disseram que não usar um valor negativo, com esta direção, permitindo que o ponto de recurso tem um maior grau de reconhecimento, ou às vezes meramente coordenadas e diâmetro pontos característicos falsos

resposta flutuador; // nível de resposta, o representante dos pontos fortes do grau, isto é, a extensão a que ponto de canto, para uso posterior e triagem

oitava int; grupo imagem pirâmide ponto recurso onde //

int class_id; // for ID do cluster

}

Um dos objectivos finais de cada algoritmo de detecção de ponto de imagem característica, e quando a imagem de um ponto característica é detectado, pode ser mais correspondentes pontos caracterticos e determina o grau de semelhança entre as duas imagens, de acordo com o nível de similaridade.

Por exemplo, podemos detectar os pontos característicos na imagem de um rosto humano, de modo a recuperar se há um alto grau de semelhança do conjunto de pontos de recurso em outro desenho, confirmando assim a posição de uma outra imagem de um rosto humano e do rosto, como algoritmo de detecção de recurso na detecção de objetos, rastreamento visual, tempo de reconstrução 3D tem um papel importante.

Uma interface genérica de detecção de ponto de imagem característica
  ordem openCV para facilitar o utilizador está a utilizar o algoritmo de detecção de ponto de imagem característica, todos os pontos característicos detectados são seladas em um API semelhante, chamado modelo de classe Ptr, isto é, todos o recurso de algoritmos de detecção atingir o mesmo escusa, detectar a detecção do ponto de imagem característica, utilizando um método semelhante ao.
  Ptr <característica correspondente ponto nome de classe de detecção> = nome da variável de detecção de ponto de característica com base :: criar) (correspondente
  nome da variável -> detectar ( a imagem original, o ponto vetor de características).
  utilizando o algoritmo descrito acima, quase todos pode chamar algoritmo de detecção de recurso de imagem. Note, no entanto, uma pluralidade de funções sobrecarregadas Criar função, se ela estiver vazia, cada um algoritmo de detecção de imagem irá usar seu próprio um padrão valor inicial para inicializar classe, se você quiser modificar os parâmetros, em seguida, a chamada de função, quando a necessidade de criar um tipo diferente de detecção, desde diferentes variáveis de inicialização.
  Além disso, ao fornecer uma função rápida OpenCV exibe os pontos característicos da imagem, como
  drawKeyPoints (tela de desenho resultado característica imagem conjunto de pontos de vetor, o valor de saída do acabamento de cor, o modo de processamento)
  , em geral, a tela irá usar a imagem característica detecção A imagem original (tipicamente detecta pontos característicos são a imagem original é convertido imagem em escala de cinzento para, após a detecção, a complexidade do algoritmo é simples).
  Modo de desenho pode ser seleccionado nos seguintes métodos são enumerados DrawMatchesFlags
  PADRÃO: desenhar único ponto característica ponto de coordenada, a imagem é exibida nas coordenadas de um pequeno ponto, as coordenadas do centro de cada ponto de recurso são pequenos pontos.
  DRAW_OVER_OUTIMG: função não criar a imagem de saída, mas para desenhar diretamente na imagem de saída de espaço de variável em si requer imagem de saída variável é uma boa inicialização, tamanho e tipo variáveis são inicializados boa
  NOT_DRAW_SINGLE um único ponto dos pontos característicos não são atraídos
  Ao desenhar DRAW_RICH_KEYPOINT plotados ponto de característica é um círculo com um sentido, este método também mostra o coordenadas, tamanho e orientação da imagem, uma característica de desenho para mostrar a melhor forma, mas a desvantagem é representada graficamente resultados muito sujo.

A. característica RÁPIDO algoritmo de detecção de
algoritmo rápido baseia-se na detecção de ângulo ponto recurso imagem.

O primeiro passo de um algoritmo de detecção de ponto de recurso é o de definir o que é um ponto de recurso, algoritmo rápido definindo ponto característica é que, se um pixel e outras áreas em torno número suficiente de pixels numa área diferente, então o ponto de pixel é um ponto de recurso, por imagens em tons de cinza, ou seja, diferentes valores de cinza de valor de cinza e os pontos de pixels que circundam o suficiente, então o ponto de pixel é um ponto de recurso.

etapa cálculo detalhado do algoritmo é a seguinte

Seleccione um ponto de coordenadas da imagem, o valor de pixel do ponto adquirido, ele está próximo determinado se o ponto é um ponto de recurso
de seleção para selecionar um ponto de coordenadas como o centro de um raio igual a três círculo Bresenham (a trajetória círculo computação logaritmos discretos, resultante ponto faixa integrante-círculo), de um modo geral, os 16 pontos no círculo, como mostrado na FIG.
Aqui Insert Picture Descrição

coordenadas do ponto preto (0, 0), as coordenadas do passo 1

Agora selecione um limiar é assumido como sendo t, um passo fundamental, presume-se que 16 pontos, há pixels N consecutivos, a diferença entre o valor de pixel do seu valor de luminância e o ponto central é maior ou menor do que t, então este ponto é uma característica da ponto. (n-valor do valor geral de 9 ou 12, 9 provou possível obter melhores resultados, uma vez que o ponto de recurso pode ser adquirida mais, quando o processo subsequente, relativamente mais quantidade de amostras de dados).
Foi adicionado a cada ponto de passagem pista requer, então o tempo relativamente longo necessário, não é um método relativamente simples pode ser seleccionada, é verificado se apenas com quatro posições de pixel 1,9,5 e 13 posições, uma primeira posição e detectada posição 9, se eles do que o mais escuro limiar ou mais leves do que o valor limiar, então o detectado posição 5 e posição 13, se P "função =" apresentação "estilo =" palavra-envoltório: normal; max-largura: nenhuma; max-altura: nenhum ; min de largura: 0px; min-altura: 0px; flutuador: nenhuma; "id =" MathJax-Elemento-8-quadro "> ponto de centro é um ponto de canto, nas quatro pixels deveria ser, pelo menos, três maior do que Ip + t "função =" apresentação "estilo =" palavra-envoltório: normal; max-largura: nenhuma; max-altura: nenhuma; min de largura: 0px; min-altura: 0px; flutuador: nenhuma; "ID = "MathJax-Elemento-9-frame"> centro brilho ponto valor + valor limite ou inferior a Ip-t "role =" "style =" apresentação word-wrap: normal; max-width: none; max-height: none; min -width: 0px; min-altura: 0px; flutuador: nenhuma; "id =" MathJax-Elemento 10 Quadro "> centro valor de lumincia ponto - de um valor limite, porque, se o ângulo de um Mais do que três quartos da porção circular deve ser satisfeita se a condição de determinação não é satisfeita, então p "função =" apresentação "estilo =" palavra-envoltório: normal; max-largura :. Nenhum; max-altura: nenhuma; min de largura : 0px; min-altura: 0px; flutuador: nenhuma;
No entanto, este método de detecção vai trazer um problema que está a provocar o efeito cluster de ponto de recurso, uma pluralidade de pontos característica de uma imagem ocorrência repetida de alta frequência, algoritmo rápido proposta uma abordagem supressão não-máxima a eliminar essa situação, as seguintes medidas específicas.
calcular a sua (função score) VV resposta magnitude para cada detectados pontos característicos. VV é aqui definida como a diferença absoluta de 16 pixels e um ponto de centro e em torno dele.
Considere dois pontos característicos adjacentes, e para comparar o seu valor VV
diminuir VV ponto de valor irá ser suprimida
  do que é a rápida detecção de pontos característicos o princípio de detecção do algoritmo de detecção rápida API ponto característica definido no seguinte openCV

estática Ptr criar (limiar int = 10, bool nonmaxSuppression = true,

                             int type=FastFeatureDetector::TYPE_9_16 );

Refere-se o valor limiar do ponto de extremidade e o ponto central da pista, quando comparado com o terceiro passo é um valor limiar t, o nonmaxSuppression representante se um quinto passo de supressão não-máximos, se o resultado da detecção de rápido encontrados agrupados casos, ele pode ser considerar, os valores de tipo parâmetro terceiros de FastFeatureDetector enumeração, os seguintes valores:

TYPE_5_8 tomadas a partir da faixa de 8 pontos, quando existem cinco pontos de satisfazer a condição de que o ponto de recurso.
TYPE_7_12 levando 12 pontos na trajetória, sete condições são satisfeitas, ou seja, o ponto de recurso.
TYPE_9_16 tomar a trilha 16 pontos, quando 9 condição é satisfeita, é um ponto de recurso.
  em resumo, podemos ver, algoritmo de detecção rápido não problemas multi-escala, de modo que a velocidade de cálculo é relativamente rápido, mas quando mais ruído na imagem quando ocorre um erro pontos característicos mais robustos propriedade não é bom, e o efeito do algoritmo é mais dependente de um valor limite t. E não RÁPIDO recurso Fast multiscale eo ponto de recurso não é a informação de direção, que perde a invariância rotacional. No entanto, no caso de requisitos em tempo real, tais como reconhecimento de objetos de vigilância de vídeo, pode ser usado.

#include "stdafx.h"
#include<opencv2\opencv.hpp>
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/features2d/features2d.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
	Mat img = imread("1.jpg");
	Mat grayimg;
	cvtColor(img, grayimg, CV_RGB2GRAY);
	Ptr<FeatureDetector> fast = FeatureDetector::create("FAST");
	vector<KeyPoint> keypoint1;
	fast->detect(grayimg, keypoint1);
	Mat img2;
	drawKeypoints(grayimg, keypoint1, img2, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
	imshow("结果图", img2);
	waitKey(0);
    return 0;
}

Aqui Insert Picture Descrição

Publicado 47 artigos originais · ganhou elogios 3 · Vistas 1424

Acho que você gosta

Origin blog.csdn.net/weixin_42076938/article/details/105234654
Recomendado
Clasificación