OpenCV: segmentação usando limite
Neste artigo, uma técnica básica para segmentação de objetos chamada Limiar . Mas antes de entrar em mais detalhes, abaixo está uma breve visão geral do OpenCV. OpenCV (Open Source Computer Vision) é uma biblioteca de código aberto de plataforma cruzada de funções de programação destinada a executar tarefas de visão computacional em tempo real em uma ampla variedade de campos, como: InputArray src: imagem de entrada (Mat 8 bits ou 32 bits) OutputArray dst: imagem de saída (mesmo tamanho da entrada) limite duplo: definir valor limite double maxval: maxVal usado no tipo 1 e 2 int type* :Especifica o tipo de limite a ser usado. (0-4) *Abaixo é fornecida uma lista de tipos de limites. Imagem de entrada
A imagem RGB de entrada é primeiro convertida em uma imagem em tons de cinza antes que o limiar seja feito.
Tipos de limites
- Reconhecimento facial
- Sistemas de reconhecimento de íris
- Reconhecimento de gestos
- Interação humano-computador (HCI)
- Robótica móvel
- Identificação de objeto
- Segmentação e reconhecimento
- Visão estéreo Stereopsis: percepção de profundidade de 2 câmeras
- Realidade aumentada
- Pixels com valor de intensidade inferior ao limite.
- Pixels com valor de intensidade maior que o limite.
A imagem RGB de entrada é primeiro convertida em uma imagem em tons de cinza antes que o limiar seja feito.
Tipos de limites
Dos dois grupos obtidos anteriormente, o grupo que possui membros com intensidade de pixel maior que o limite definido é atribuído Max_Value ou, no caso de escala de cinza, um valor de 255 (branco). Os membros do grupo restante têm suas intensidades de pixel definidas como 0 (preto).
Se o valor da intensidade do pixel em (x y) na imagem de origem for maior que o limite, o valor na imagem final será definido como maxVal.
Inv. O limite binário é igual ao limite binário. A única diferença essencial é no limite Inv.Binary, o grupo com intensidades de pixel maiores que o limite definido é atribuído como '0', enquanto os pixels restantes com intensidades menores que o limite são definidos como maxVal.
Se o valor da intensidade do pixel em (x y) na imagem de origem for maior que o limite, o valor na imagem final será definido como 0, caso contrário, será definido como maxVal.
O grupo que tem intensidades de pixel superiores ao limite definido é truncado para o limite definido ou, por outras palavras, os valores de pixel são definidos para serem iguais ao limite definido. Todos os outros valores permanecem os mesmos.
Se o valor da intensidade do pixel em (x y) na imagem de origem for maior que o limite, o valor na imagem final será definido como limite, caso contrário, permanecerá inalterado.
Uma técnica de limite muito simples em que definimos a intensidade do pixel como '0' para todos os pixels do grupo com valor de intensidade de pixel menor que o limite.
Se o valor da intensidade do pixel em (x y) na imagem de origem for maior que o limite, o valor em (x y) na imagem final não muda. Todos os pixels restantes são definidos como ‘0’.
Semelhante à técnica anterior, aqui definimos a intensidade do pixel como '0' para todos os pixels do grupo com valor de intensidade de pixel maior que o limite.
Se o valor da intensidade do pixel em (x y) na imagem de origem for maior que o limite, o valor em (x y) na imagem final será definido como ‘0’. Todos os valores de pixel restantes permanecem inalterados. Para compilar programas OpenCV você precisa ter a biblioteca OpenCV instalada em seu sistema. Estarei postando um tutorial simples para o mesmo nos próximos dias. Se você já instalou o OpenCV execute o código abaixo com a imagem de entrada de sua escolha. CPP // CPP program to demonstrate segmentation // thresholding. #include #include #include #include using namespace cv ; int main ( int argc char ** argv ) { if ( argc != 2 ) { cout < < ' Usage: ' ' ' < < endl ; return -1 ; } int threshold_value = 0 ; // Valid Values: 0 1 2 3 4 int threshold_type = 2 ; // maxVal useful for threshold_type 1 and 2 int maxVal = 255 ; // Source image Mat src = imread ( argv [ 1 ] 1 ); cvNamedWindow ( 'Original' CV_WINDOW_NORMAL ); imshow ( 'Original' src ); Mat src_gray dst ; // Convert the image to GrayScale cvtColor ( src src_gray CV_BGR2GRAY ); // Create a window to display results cvNamedWindow ( 'Result' CV_WINDOW_NORMAL ); createTrackbar ( 'Threshold' 'Result' & threshold_value 255 ); while ( 1 ) { threshold ( src_gray dst threshold_value maxVal threshold_type ); imshow ( 'Result' dst ); waitKey ( 1 ); } }
Você Pode Gostar
Principais Artigos
Categoria
Artigos Interessantes