Detecção de superfície


9

Como um segmento segmentaria grandes áreas de cinza (variando de branco a preto) a partir de uma imagem? (Se você sabe disso no opencv, pode responder dizendo o que faria no opencv). Por exemplo, dada esta imagem:

insira a descrição da imagem aqui

Você vê que esta é uma grande área cinza e é claramente distinguível do resto. Como você pode segmentar isso se essa área pode ter um tom de cinza e precisar trabalhar em tempo real.

Thx antecipadamente.


Vejo várias áreas cinzentas claramente distinguíveis. Você poderia mostrar o resultado desejado?
amigos estão dizendo sobre belisarius

meu resultado desejado é as coordenadas do canto superior direito e cantos esquerdo e a coordenada do canto inferior esquerdo do retângulo cinza médio
Olivier_s_j

Você pode nos dizer mais alguma coisa sobre o ambiente e a variação potencial nas imagens que você precisará processar? O alvo sempre estará próximo do meio da imagem? Haverá outros retângulos cinza presentes, possivelmente do mesmo tamanho? E se eles aparecerem com o mesmo tom de cinza? Existem outras coisas que poderíamos usar para identificá-lo? Ele sempre terá a pequena forma de "T" no topo?
Justis

Olá, o alvo nem sempre estará próximo do meio da imagem. O alvo sempre será algum tipo de retângulo. (Também pode ser apenas uma parede). Se houver vários retângulos, eles também devem ser detectados, mas devem ser grandes. Pequenas áreas podem ser descartadas. Se todos aparecerem como o mesmo tipo de cinza, todos deverão ser detectados, mas a chance de isso acontecer é muito pequena. A única propriedade real que pode ser detectada é que uma superfície terá o mesmo cinza (mais ou menos) em toda a superfície e é um retângulo. Não haverá sempre um pequeno top em forma de T o tempo todo
Olivier_s_j

Respostas:


9

Você obterá uma segmentação razoável da área cinza usando o algoritmo Watershed ou cortes gráficos. O Watershed está disponível no opencv, mas os cortes nos gráficos ainda não estão. (BTW Este é um mapa de profundidade do Kinect?)


11
A função da bacia hidrográfica em opencv exigia uma imagem de 3 canais de 8 bits como entrada. Meu mapa de profundidade é uma imagem 1 de 8 bits. Alguma idéia de como resolver isso?
Olivier_s_j 6/12/11

/ * obter propriedades da imagem / width = src-> width; height = src-> height; / crie uma nova imagem para a versão em escala de cinza * / IplImage * dst = cvCreateImage (cvSize (largura, altura), IPL_DEPTH_8U, 1); cvCvtColor (src, dst, CV_RGB2GRAY);
Nav

Outra pergunta, acabei de obter a função de divisor de águas trabalhando em outra imagem (apenas um exemplo do opencv). Mas eles começam com uma imagem colorida e uma imagem binária. Eu só tenho uma imagem ... a imagem em escala de escala. Alguma idéia de qual deve ser a máscara (a segunda variável de entrada)?
Olivier_s_j

4

No Mathematica, você pode fazer algo como:

Colorize[MorphologicalComponents[
  ColorNegate@
   Erosion[Dilation[
     DeleteSmallComponents[
      Erosion[Binarize[
        GradientFilter[
         ColorConvert[Import@"http://i.stack.imgur.com/XdnaW.png", 
          "RGB"], 2], .015], 1], 100], 2], 2]], 
 ColorFunction -> "ThermometerColors"]

insira a descrição da imagem aqui

Provavelmente você pode traduzir esse código para qualquer lib de processamento de imagem.


Oi, parece legal. Mas eu não tenho mathematica. Mas acho que você usou o limiar com base na escala de cinza dessa imagem? Talvez você possa dar um pouco de informação com seu código? Thx
Olivier_s_j

11
@Ojt Para cada comando, você pode ler " reference.wolfram.com/mathematica/ref/xxx.html " para obter uma descrição. Por exemplo reference.wolfram.com/mathematica/ref/…
Dr. belisarius

Ok, eu fiz como você sugeriu. Mas parece que você está usando o Binarize para limitar um determinado valor. O que não é possível no meu caso. Uma vez que grandes áreas de podem ter diferentes tons de cinza. (Por exemplo, a superfície do meio pode ser muito cinza claro). E então o limite não funcionaria.
Olivier_s_j
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.