Técnicas de segmentação de imagens [Implementação passo a passo]
Publicados: 2021-02-19O que você vê primeiro quando olha para sua selfie? Seu rosto, certo? Você pode identificar seu rosto porque seu cérebro é capaz de identificar seu rosto e separá-lo do resto da imagem (o fundo).
Agora, se você quisesse que seu computador reconhecesse seu rosto em uma selfie, ele seria capaz de fazer isso?
Sim, desde que possa realizar segmentação de imagens.
No artigo de hoje, discutiremos a segmentação de imagens e todos os seus principais aspectos, incluindo as várias técnicas de segmentação de imagens que você pode usar. No entanto, é uma leitura longa, por isso recomendamos marcar este artigo como favorito para que você possa voltar a ele mais tarde.
Antes de começarmos a discutir as várias técnicas de segmentação no processamento de imagens, devemos primeiro descobrir: “O que é segmentação de imagens?”
Índice
O que é segmentação de imagem?
A segmentação de imagens é um ramo do processamento digital de imagens que se concentra em particionar uma imagem em diferentes partes de acordo com suas características e propriedades. O objetivo principal da segmentação de imagens é simplificar a imagem para facilitar a análise. Na segmentação de imagens, você divide uma imagem em várias partes que possuem atributos semelhantes. As partes nas quais você divide a imagem são chamadas de Objetos de Imagem.
É o primeiro passo para a análise de imagens. Sem realizar a segmentação de imagens, realizar implementações de visão computacional seria quase impossível para você.
Usando técnicas de segmentação de imagem, você pode dividir e agrupar pixels específicos de uma imagem, atribuir rótulos a eles e classificar outros pixels de acordo com esses rótulos. Você pode desenhar linhas, especificar bordas e separar objetos específicos (componentes importantes) em uma imagem do restante dos objetos (componentes não importantes).
No aprendizado de máquina, você pode usar os rótulos gerados a partir da segmentação de imagens para treinamento supervisionado e não supervisionado. Isso permitiria que você resolvesse muitos problemas de negócios.
Um exemplo seria melhor entender como funciona a segmentação de imagens.
Observe a imagem a seguir.
Fonte
Aqui, você pode ver uma cadeira colocada no meio de uma estrada. Ao usar a segmentação de imagem, você pode separar a cadeira da imagem. Além disso, você pode usar inúmeras técnicas de segmentação de imagens para obter resultados diferentes. Por exemplo, se você quiser usar uma imagem com várias cadeiras, precisará usar a segmentação semântica.
Por outro lado, se você quiser identificar todas as cadeiras presentes em uma imagem como a seguinte, precisará usar a segmentação de instância:
Fonte
Por que a segmentação de imagens é necessária?
A segmentação de imagens é um grande aspecto da visão computacional e tem muitas aplicações em vários setores. Algumas das áreas notáveis onde a segmentação de imagens é usada profusamente são:
1. Reconhecimento facial
A tecnologia de reconhecimento facial presente em seu iPhone e sistemas avançados de segurança usam segmentação de imagem para identificar seu rosto. Ele deve ser capaz de identificar os recursos exclusivos do seu rosto para que qualquer parte indesejada não possa acessar seu telefone ou sistema.
2. Identificação da placa de matrícula
Muitos semáforos e câmeras usam a identificação da placa para cobrar multas e ajudar nas buscas. A tecnologia de identificação de placas permite que um sistema de trânsito reconheça um carro e obtenha suas informações relacionadas à propriedade. Ele usa segmentação de imagem para separar uma placa e suas informações do restante dos objetos presentes em sua visão. Essa tecnologia simplificou consideravelmente o processo de multa para os governos.
3. Pesquisa baseada em imagem
O Google e outros mecanismos de pesquisa que oferecem recursos de pesquisa baseados em imagens usam técnicas de segmentação de imagens para identificar os objetos presentes em sua imagem e comparar suas descobertas com as imagens relevantes encontradas para fornecer resultados de pesquisa.
4. Imagens Médicas
No setor médico, usamos segmentação de imagens para localizar e identificar células cancerígenas, medir volumes de tecidos, executar simulações de cirurgias virtuais e realizar navegação intra-cirúrgica. A segmentação de imagens tem muitas aplicações no setor médico. Ele ajuda a identificar áreas afetadas e planejar tratamentos para o mesmo.
Além dessas aplicações, a segmentação de imagens tem usos em manufatura, agricultura, segurança e muitos outros setores. À medida que nossas tecnologias de visão computacional se tornam mais avançadas, o uso de técnicas de segmentação de imagens aumentará de acordo.
Por exemplo, alguns fabricantes começaram a usar técnicas de segmentação de imagens para encontrar produtos defeituosos. Aqui, o algoritmo capturaria apenas os componentes necessários da imagem do objeto e os classificaria como defeituosos ou ótimos. Esse sistema reduz o risco de erros humanos e torna o processo de teste mais eficiente para a organização.
Implementações comuns de classificação de imagens estão em Python, C, C++ e Matlab.
Quais são os diferentes tipos de segmentação de imagem?
A segmentação de imagens é um tema muito amplo e tem diferentes formas de abordar o processo. Podemos classificar a segmentação de imagens de acordo com os seguintes parâmetros:
1. Classificação Baseada em Abordagem
Em seu sentido mais básico, a segmentação de imagens é a identificação de objetos. Um algoritmo não pode classificar os diferentes componentes sem identificar primeiro um objeto. De implementações simples a complicadas, toda segmentação de imagens funciona com base na identificação de objetos.
Assim, podemos classificar os métodos de segmentação de imagens com base na forma como os algoritmos identificam objetos, ou seja, coletando pixels semelhantes e separando-os de pixels diferentes. Existem duas abordagens para realizar esta tarefa:
Abordagem baseada em região (detecção de similaridade)
Nesse método, você detecta pixels semelhantes na imagem de acordo com um limite selecionado, mesclagem de região, dispersão de região e crescimento de região. Clustering e algoritmos de aprendizado de máquina semelhantes usam esse método para detectar recursos e atributos desconhecidos. Os algoritmos de classificação seguem essa abordagem para detectar características e separar segmentos de imagem de acordo com elas.
Abordagem baseada em limites (detecção de descontinuidade)
A abordagem baseada em limites é o oposto da abordagem baseada em região para identificação de objetos. Ao contrário da detecção baseada em região, onde você encontra pixels com características semelhantes, você encontra pixels que são diferentes entre si na abordagem baseada em limites. Detecção de ponto, detecção de borda, detecção de linha e algoritmos semelhantes seguem esse método onde detectam a borda de pixels diferentes e os separam do resto da imagem de acordo.
2. Classificação Baseada em Técnica
Ambas as abordagens têm suas técnicas distintas de segmentação de imagens. Usamos essas técnicas de acordo com o tipo de imagem que queremos processar e analisar e o tipo de resultado que queremos obter dela.
Com base nesses parâmetros, podemos dividir os algoritmos de segmentação de imagens nas seguintes categorias:
Técnicas Estruturais
Esses algoritmos exigem que você tenha os dados estruturais da imagem que está usando. Isso inclui os pixels, distribuições, histogramas, densidade de pixels, distribuição de cores e outras informações relevantes. Então, você deve ter os dados estruturais da região que você precisa separar da imagem.
Você precisará dessas informações para que seu algoritmo possa identificar a região. Os algoritmos que usamos para essas implementações seguem a abordagem baseada em região.
Técnicas estocásticas
Esses algoritmos requerem informações sobre os valores discretos de pixels da imagem, em vez da estrutura da seção necessária da imagem. Devido a isso, eles não exigem muitas informações para realizar a segmentação de imagens e são úteis quando você precisa trabalhar com várias imagens. Algoritmos de aprendizado de máquina, como clustering K-means e algoritmos ANN, se enquadram nessa categoria.
Técnicas híbridas
Como você pode adivinhar pelo nome, esses algoritmos usam métodos estocásticos e estruturais. Isso significa que eles usam as informações estruturais da região necessária e as informações discretas de pixels de toda a imagem para realizar a segmentação da imagem.
Quais são os diferentes tipos de técnicas de segmentação de imagens?
Agora que conhecemos as diferentes abordagens e tipos de técnicas para segmentação de imagens, podemos começar a discutir as especificidades. A seguir estão os principais tipos de técnicas de segmentação de imagem:
- Segmentação de limite
- Segmentação baseada em bordas
- Segmentação por região
- Segmentação de bacias hidrográficas
- Algoritmos de segmentação baseados em cluster
- Redes neurais para segmentação
Vamos discutir cada uma dessas técnicas em detalhes para entender suas propriedades, benefícios e limitações:
1. Segmentação de Limites
O método mais simples de segmentação no processamento de imagens é o método de limiar. Ele divide os pixels em uma imagem comparando a intensidade do pixel com um valor especificado (limiar). É útil quando o objeto requerido tem uma intensidade maior que o fundo (partes desnecessárias).
Você pode considerar o valor limite (T) como uma constante, mas só funcionaria se a imagem tivesse muito pouco ruído (informações e dados desnecessários). Você pode manter o valor limite constante ou dinâmico de acordo com suas necessidades.
O método de limiarização converte uma imagem em escala de cinza em uma imagem binária dividindo-a em dois segmentos (seções obrigatórias e não obrigatórias).
De acordo com os diferentes valores de limiar, podemos classificar a segmentação de limiar nas seguintes categorias:
Limite Simples
Nesse método, você substitui os pixels da imagem por branco ou preto. Agora, se a intensidade de um pixel em uma determinada posição for menor que o valor limite, você o substituirá por preto. Por outro lado, se for maior que o limite, você o substituirá por branco. Este é um limiar simples e é particularmente adequado para iniciantes na segmentação de imagens.
Binarização de Otsu
No limiar simples, você escolhe um valor de limiar constante e o usa para realizar a segmentação da imagem. No entanto, como você determina que o valor escolhido foi o correto? Embora o método direto para isso seja testar valores diferentes e escolher um, não é o mais eficiente.
Tire uma imagem com um histograma com dois picos, um para o primeiro plano e outro para o fundo. Ao usar a binarização Otsu, você pode tomar o valor aproximado do meio desses picos como seu valor limite.
Na binarização Otsu, você calcula o valor limite do histograma da imagem se a imagem for bimodal.
Esse processo é bastante popular para digitalizar documentos, reconhecer padrões e remover cores desnecessárias de um arquivo. No entanto, tem muitas limitações. Você não pode usá-lo para imagens que não são bimodais (imagens cujos histogramas têm vários picos).
Limite Adaptativo
Ter um valor de limite constante pode não ser uma abordagem adequada para todas as imagens. Imagens diferentes têm fundos e condições diferentes que afetam suas propriedades.
Assim, em vez de usar um valor de limite constante para realizar a segmentação em toda a imagem, você pode manter a variável de valor de limite. Nesta técnica, você manterá diferentes valores de limite para diferentes seções de uma imagem.
Esse método funciona bem com imagens que têm condições de iluminação variadas. Você precisará usar um algoritmo que segmente a imagem em seções menores e calcule o valor limite para cada uma delas.
2. Segmentação baseada em bordas
A segmentação baseada em bordas é uma das implementações mais populares de segmentação no processamento de imagens. Ele se concentra em identificar as bordas de diferentes objetos em uma imagem. Esta é uma etapa crucial, pois ajuda a encontrar os recursos dos vários objetos presentes na imagem, pois as bordas contêm muitas informações que você pode usar.
A detecção de bordas é muito popular porque ajuda você a remover informações indesejadas e desnecessárias da imagem. Reduz consideravelmente o tamanho da imagem, facilitando a análise da mesma.
Os algoritmos usados na segmentação baseada em bordas identificam bordas em uma imagem de acordo com as diferenças de textura, contraste, nível de cinza, cor, saturação e outras propriedades. Você pode melhorar a qualidade de seus resultados conectando todas as bordas em cadeias de bordas que correspondam às bordas da imagem com mais precisão.
Existem muitos métodos de segmentação baseados em borda disponíveis. Podemos dividi-los em duas categorias:
Detecção de borda com base em pesquisa
Os métodos de detecção de borda baseados em pesquisa concentram-se no cálculo de uma medida da força da borda e procuram os máximos direcionais locais da magnitude do gradiente por meio de uma estimativa calculada da orientação local da borda.
Detecção de borda baseada em cruzamento zero
Os métodos de detecção de borda baseados em cruzamento de zero procuram cruzamentos de zero em uma expressão derivada recuperada da imagem para encontrar as bordas.
Normalmente, você terá que pré-processar a imagem para remover ruídos indesejados e facilitar a detecção de bordas. Canny, Prewitt, Deriche e Roberts cross são alguns dos operadores de detecção de bordas mais populares. Eles tornam mais fácil detectar descontinuidades e encontrar as bordas.
Na detecção baseada em bordas, seu objetivo é obter um mínimo de segmentação parcial onde você possa agrupar todas as bordas locais em uma imagem binária. Em sua imagem binária recém-criada, as cadeias de borda devem corresponder aos componentes existentes da imagem em questão.
3. Segmentação por região
Os algoritmos de segmentação baseados em região dividem a imagem em seções com recursos semelhantes. Essas regiões são apenas um grupo de pixels e o algoritmo encontra esses grupos primeiro localizando um ponto de semente que pode ser uma pequena seção ou uma grande parte da imagem de entrada.
Depois de encontrar os pontos de semente, um algoritmo de segmentação baseado em região adicionaria mais pixels a eles ou os reduziria para poder mesclá-los com outros pontos de semente.
Com base nesses dois métodos, podemos classificar a segmentação por região nas seguintes categorias:
Região em crescimento
Nesse método, você começa com um pequeno conjunto de pixels e, em seguida, começa a mesclar iterativamente mais pixels de acordo com condições de similaridade específicas. Um algoritmo de crescimento de região escolheria um pixel de semente arbitrário na imagem, o compararia com os pixels vizinhos e começaria a aumentar a região encontrando correspondências com o ponto de semente.
Quando uma determinada região não puder crescer mais, o algoritmo escolherá outro pixel de semente que pode não pertencer a nenhuma região existente. Uma região pode ter muitos atributos fazendo com que ela assuma a maior parte da imagem. Para evitar esse erro, os algoritmos de crescimento de região aumentam várias regiões ao mesmo tempo.
Você deve usar algoritmos de crescimento de região para imagens com muito ruído, pois o ruído dificultaria a localização de bordas ou o uso de algoritmos de limite.
Divisão e fusão de regiões
Como o nome sugere, um método focado de divisão e mesclagem de região executaria duas ações juntas – dividir e mesclar partes da imagem.
Primeiro, a imagem em regiões que possuem atributos semelhantes e mescla as porções adjacentes que são semelhantes entre si. Na divisão de região, o algoritmo considera toda a imagem enquanto no crescimento de região, o algoritmo se concentra em um ponto específico.
O método de divisão e fusão de regiões segue uma metodologia de divisão e conquista. Ele divide a imagem em diferentes partes e as combina de acordo com suas condições predeterminadas. Outro nome para os algoritmos que executam essa tarefa é algoritmos de mesclagem dividida.
4. Segmentação de Bacias Hidrográficas
No processamento de imagens, um divisor de águas é uma transformação em uma imagem em tons de cinza. Refere-se à bacia hidrográfica geológica ou a uma divisão de drenagem. Um algoritmo divisor de águas trataria a imagem como se fosse um mapa topográfico. Ele considera o brilho de um pixel como sua altura e encontra as linhas que percorrem o topo dessas cristas.
A bacia hidrográfica possui muitas definições técnicas e possui diversas aplicações. Além de identificar os cumes dos pixels, ele se concentra em definir bacias (o oposto de cumes) e inunda as bacias com marcadores até encontrar as linhas de divisores de água que atravessam os cumes.
Como as bacias têm muitos marcadores, enquanto os cumes não, a imagem é dividida em várias regiões de acordo com a 'altura' de cada pixel.
O método watershed converte cada imagem em um mapa topográfico O método de segmentação watershed refletiria a topografia através dos valores de cinza de seus pixels.
Agora, uma paisagem com vales e cumes certamente teria aspectos tridimensionais. A bacia consideraria a representação tridimensional da imagem e criaria regiões de acordo, que são chamadas de “bacias de captação”.
Ele tem muitas aplicações no setor médico, como ressonância magnética, imagens médicas, etc. A segmentação de bacias hidrográficas é uma parte proeminente da segmentação de imagens médicas, portanto, se você deseja entrar nesse setor, deve se concentrar em aprender esse método para segmentação em processamento de imagens particularmente.
5. Algoritmos de segmentação baseados em clusters
Se você estudou algoritmos de classificação, deve ter se deparado com algoritmos de agrupamento. Eles são algoritmos não supervisionados e ajudam você a encontrar dados ocultos na imagem que podem não ser visíveis para uma visão normal. Esses dados ocultos incluem informações como clusters, estruturas, sombreamentos, etc.
Como o nome sugere, um algoritmo de agrupamento divide a imagem em agrupamentos (grupos disjuntos) de pixels que possuem características semelhantes. Seria separar os elementos de dados em clusters onde os elementos de um cluster são mais semelhantes em comparação com os elementos presentes em outros clusters.
Alguns dos algoritmos de agrupamento populares incluem fuzzy c-means (FCM), k-means e algoritmos k-means melhorados. Na segmentação de imagens, você usaria principalmente o algoritmo de agrupamento k-means, pois é bastante simples e eficiente. Por outro lado, o algoritmo FCM coloca os pixels em diferentes classes de acordo com seus vários graus de pertinência.
Os algoritmos de agrupamento mais importantes para segmentação no processamento de imagens são:
Agrupamento K-means
K-means é um algoritmo simples de aprendizado de máquina não supervisionado. Ele classifica uma imagem por meio de um número específico de clusters. Ele inicia o processo dividindo o espaço da imagem em k pixels que representam k centroides de grupos.
Em seguida, eles atribuem cada objeto ao grupo com base na distância entre eles e o centroide. Quando o algoritmo atribuiu todos os pixels a todos os clusters, ele pode mover e reatribuir os centroides.
Meios C difusos
Com o método de agrupamento fuzzy c-means, os pixels na imagem podem ser agrupados em vários agrupamentos. Isso significa que um pixel pode pertencer a mais de um cluster. No entanto, cada pixel teria níveis variados de semelhanças com cada cluster. O algoritmo fuzzy c-means tem uma função de otimização que afeta a precisão de seus resultados.
Os algoritmos de clustering podem cuidar da maioria das suas necessidades de segmentação de imagens. Se você quiser saber mais sobre eles, confira este guia sobre o que é clustering e os diferentes tipos de algoritmos de clustering .
6. Redes Neurais para Segmentação
Talvez você não queira fazer tudo sozinho. Talvez você queira que uma IA faça a maioria de suas tarefas, o que certamente você pode fazer com redes neurais para segmentação de imagens.
Você usaria a IA para analisar uma imagem e identificar seus diferentes componentes, como rostos, objetos, texto, etc. As Redes Neurais Convolucionais são bastante populares para segmentação de imagens porque podem identificar e processar dados de imagens com muita rapidez e eficiência.
Os especialistas da Facebook AI Research (FAIR) criaram uma arquitetura de aprendizado profundo chamada Mask R-CNN, que pode criar uma máscara de pixel para cada objeto presente em uma imagem. É uma versão aprimorada da arquitetura de detecção de objetos Faster R-CNN. O Faster R-CNN usa dois dados para cada objeto em uma imagem, as coordenadas da caixa delimitadora e a classe do objeto. Com Mask R-CNN, você ganha uma seção adicional neste processo. Máscara R-CNN emite a máscara do objeto após realizar a segmentação.
Nesse processo, você primeiro passaria a imagem de entrada para o ConvNet, que geraria o mapa de recursos para a imagem. Em seguida, o sistema aplica a rede de proposta de região (RPN) nos mapas de características e gera as propostas de objetos com suas pontuações de objetividade.
Depois disso, a camada de pooling de Roi é aplicada às propostas para reduzi-las a um tamanho. Na etapa final, o sistema passa as propostas para a camada conectada para classificação e gera a saída com as caixas delimitadoras para cada objeto.
Saiba mais sobre segmentação no processamento de imagens
A segmentação no processamento de imagens é certamente um tópico amplo com muitas subseções. De várias técnicas de segmentação de imagens a algoritmos, há muito o que aprender nesta disciplina. Com tanto terreno para cobrir, você pode facilmente se perder e se confundir.
É por isso que recomendamos fazer um curso de aprendizado de máquina e IA para superar esses problemas. Um curso neste assunto ensinaria o básico, bem como os conceitos avançados de segmentação de imagens e os setores relacionados. Você aprenderá sobre os diferentes conceitos de aprendizado de máquina relacionados ao processamento de imagens, segmentação de imagens e visão computacional.
Os cursos de IA e ML facilitarão o aprendizado de todos os conceitos relevantes, pois você terá um currículo estruturado para estudar. Na upGrad, oferecemos vários cursos em aprendizado de máquina.
A seguir estão os principais cursos que oferecemos em aprendizado de máquina e IA:
- Mestrado em Aprendizado de Máquina e IA
- Programa de Pós-Graduação Executiva em Aprendizado de Máquina e Inteligência Artificial
- Mestrado em Aprendizado de Máquina e Inteligência Artificial
- Certificação PG em Machine Learning e Deep Learning
- Certificação PG em Machine Learning e PNL
Todos esses cursos permitem que você aprenda com especialistas do setor que resolvem suas dúvidas e respondem às suas perguntas em sessões ao vivo. Você estudará online, o que significa que não precisaria ir a lugar nenhum ou atrapalhar seu trabalho enquanto fazia esses cursos.
Esses cursos dão acesso ao Student Success Corner do upGrad, que oferece muitas vantagens adicionais, incluindo feedback de currículo personalizado, preparação para entrevistas e aconselhamento de carreira. Ao final do curso, você será um profissional de IA/ML pronto para o trabalho, equipado com todas as habilidades necessárias.
Conclusão
A segmentação de imagens é certamente um tópico complicado e avançado. Todas as várias técnicas de segmentação de imagens que discutimos neste artigo têm suas vantagens e limitações específicas. Ao se familiarizar com eles, você terá uma ideia de onde deve usar um e onde deve evitar usar o outro.
Com todas as habilidades aprendidas, você também pode se tornar ativo em outras plataformas competitivas para testar suas habilidades e obter ainda mais experiência prática.
Quais são algumas aplicações importantes da segmentação de imagens?
A segmentação de imagem é uma grande parte da visão computacional e é usada em muitos negócios diferentes. A segmentação de imagem é usada pela tecnologia de reconhecimento facial em seu telefone e sistemas de segurança avançados para reconhecer seu rosto. Um sistema de trânsito pode reconhecer um carro e obter informações sobre seu proprietário usando tecnologias de identificação de placas. Os algoritmos de segmentação de imagens são usados pelo Google e outros mecanismos de pesquisa baseados em imagens para reconhecer os itens em sua foto e comparar suas conclusões com as fotos relevantes que eles descobrem para fornecer resultados de pesquisa. Empregamos segmentação de imagens na área médica para encontrar e identificar células cancerígenas, quantificar volumes de tecidos, realizar simulações de cirurgias virtuais e navegar durante a operação.
Quais são os tipos de segmentação de imagem?
A abordagem de limiar é o método de segmentação de processamento de imagem mais básico. Ele separa pixels em uma imagem comparando a intensidade de cada pixel com um valor predeterminado (limiar). Simplificando, o limiar é o processo de substituir os pixels em uma imagem por pretos ou brancos. Você pode manter o limite especificado flexível em vez de empregar um único valor fixo para segmentação em toda a imagem. Limitação adaptativa é o nome para este método. Um dos tipos mais comuns de segmentação de processamento de imagem é a segmentação baseada em bordas. Ele se concentra em reconhecer as bordas de várias coisas em uma imagem.
O que é algoritmo de segmentação baseado em cluster?
Você provavelmente já se deparou com algoritmos de agrupamento se pesquisou algoritmos de classificação. Eles são algoritmos não supervisionados que ajudam você a localizar dados ocultos em uma imagem que não é visível a olho nu. Clusters, estruturas, sombreamentos e outras informações estão entre os dados ocultos. Um algoritmo de agrupamento separa uma imagem em agrupamentos (grupos disjuntos) de pixels com propriedades comparáveis, como o nome indica. Ele dividiria os itens de dados em clusters, com os componentes em um cluster sendo mais semelhantes aos elementos em outros clusters.