Tuesday 29 August 2017

Processamento De Imagens Em Média Móvel


O cientista e os coordenadores guia para processamento de sinal digital Por Steven W. Smith, Ph. D. Capítulo 1: A largura ea profundidade das imagens DSP são sinais com características especiais. Primeiro, eles são uma medida de um parâmetro sobre o espaço (distância), enquanto a maioria dos sinais são uma medida de um parâmetro ao longo do tempo. Em segundo lugar, eles contêm uma grande quantidade de informações. Por exemplo, mais de 10 megabytes podem ser necessários para armazenar um segundo de vídeo de televisão. Isso é mais do que mil vezes maior do que para um sinal de voz de comprimento semelhante. Em terceiro lugar, o juiz final da qualidade é muitas vezes uma avaliação humana subjetiva, e não um critério objetivo. Essas características especiais tornaram o processamento de imagens um subgrupo distinto no DSP. Medicina Em 1895, Wilhelm Conrad Rntgen descobriu que os raios-x poderiam passar através de quantidades substanciais de matéria. Medicina foi revolucionada pela capacidade de olhar dentro do corpo humano vivo. Sistemas de raios-x médicos espalhados por todo o mundo em apenas alguns anos. Apesar de seu óbvio sucesso, a radiografia médica foi limitada por quatro problemas até que a DSP e técnicas relacionadas surgiram na década de 1970. Primeiro, as estruturas sobrepostas no corpo podem se esconder umas atrás das outras. Por exemplo, porções do coração podem não ser visíveis atrás das costelas. Em segundo lugar, nem sempre é possível distinguir entre tecidos semelhantes. Por exemplo, pode ser capaz de separar o osso do tecido mole, mas não distinguir um tumor do fígado. Terceiro, as imagens de raio-x mostram anatomia. A estrutura do corpo, e não a fisiologia. A operação do corpo. A imagem de raios-x de uma pessoa viva parece exatamente como a imagem de raio-x de um morto. Posteriormente, a exposição a raios-X pode causar câncer, exigindo que seja usada com moderação e apenas com justificativa adequada. O problema de sobreposição de estruturas foi resolvido em 1971 com a introdução do primeiro scanner de tomografia computadorizada (anteriormente denominado tomografia axial computadorizada). A tomografia computadorizada (TC) é um exemplo clássico de processamento de sinais digitais. Os raios X de muitas direções são passados ​​através da seção do corpo de pacientes que está sendo examinado. Em vez de simplesmente formar imagens com os raios-x detectados, os sinais são convertidos em dados digitais e armazenados em um computador. A informação é então usada para calcular imagens que parecem ser fatias através do corpo. Estas imagens mostram um detalhe muito maior do que as técnicas convencionais, permitindo um diagnóstico e tratamento significativamente melhores. O impacto da TC foi quase tão grande quanto a introdução original de imagens de raios-X em si. Em apenas alguns anos, cada grande hospital do mundo tinha acesso a um tomógrafo. Em 1979, dois dos principais contribuintes dos CTs, Godfrey N. Hounsfield e Allan M. Cormack, dividiram o Prêmio Nobel de Medicina. Isso é bom DSP Os últimos três problemas de raios-x foram resolvidos usando energia penetrante diferente de raios-x, como rádio e ondas sonoras. DSP desempenha um papel fundamental em todas estas técnicas. Por exemplo, Ressonância Magnética (MRI) usa campos magnéticos em conjunto com ondas de rádio para sondar o interior do corpo humano. Adequadamente ajustando a força ea freqüência dos campos fazem com que os núcleos atômicos em uma região localizada do corpo ressoem entre estados de energia quântica. Esta ressonância resulta na emissão de uma onda de rádio secundária, detectada com uma antena colocada perto do corpo. A intensidade e outras características deste sinal detectado fornecem informação sobre a região localizada na ressonância. O ajuste do campo magnético permite que a região de ressonância seja digitalizada em todo o corpo, mapeando a estrutura interna. Essas informações são geralmente apresentadas como imagens, assim como na tomografia computadorizada. Além de fornecer excelente discriminação entre diferentes tipos de tecido mole, a ressonância magnética pode fornecer informações sobre fisiologia, como o fluxo sanguíneo através das artérias. A RM depende totalmente das técnicas de processamento de sinal digital, e não poderia ser implementada sem elas. Espaço Às vezes, você só tem que tirar o máximo proveito de uma imagem ruim. Isso é freqüentemente o caso com imagens tiradas de satélites não tripulados e veículos de exploração espacial. Ninguém vai enviar um reparador para Marte apenas para ajustar os botões em uma câmera DSP pode melhorar a qualidade das imagens tomadas sob condições extremamente desfavoráveis ​​de várias maneiras: ajuste de brilho e contraste, detecção de borda, redução de ruído, ajuste de foco, motion blur Redução, etc. As imagens que têm distorção espacial, tal como encontrada quando uma imagem plana é tomada de um planeta esférico, podem também ser entortadas em uma representação correta. Muitas imagens individuais também podem ser combinadas em um único banco de dados, permitindo que as informações sejam exibidas de maneiras únicas. Por exemplo, uma sequência de vídeo simulando um vôo aéreo sobre a superfície de um planeta distante. Produtos de Imagem Comercial O grande conteúdo de informação em imagens é um problema para sistemas vendidos em grande quantidade para o público em geral. Sistemas comerciais devem ser baratos. E este doesnt malha bem com grandes memórias e altas taxas de transferência de dados. Uma resposta a este dilema é a compressão de imagens. Assim como com os sinais de voz, as imagens contêm uma tremenda quantidade de informações redundantes e podem ser executadas através de algoritmos que reduzem o número de bits necessários para representá-los. A televisão e outras imagens em movimento são especialmente adequadas para compressão, uma vez que a maior parte da imagem permanece a mesma de quadro para quadro. Produtos comerciais de imagem que aproveitam esta tecnologia incluem: videotelefones, programas de computador que exibem imagens em movimento e televisão digital. Este tutorial discute como usar o MATLAB para processamento de imagem. Alguma familiaridade com MATLAB é assumida (você deve saber como usar matrizes e escrever um M-arquivo). É útil ter o MATLAB Image Processing Toolbox, mas, felizmente, nenhuma caixa de ferramentas é necessária para a maioria das operações. Os comandos que requerem o Image Toolbox são indicados com Image Toolbox. Representação de imagem Existem cinco tipos de imagens no MATLAB. Grayscale. Uma imagem de escala de cinza M pixels de altura e N pixels de largura é representada como uma matriz de tipo de dados duplo de tamanho M N. Os valores dos elementos (por exemplo, MyImage (m, n)) denotam as intensidades de escala de cinza de pixel em 0,1 com 0 preto e 1 branco. Truecolor RGB. Uma imagem truecolor vermelho-verde-azul (RGB) é representada como uma matriz dupla tridimensional M N 3. Cada pixel tem componentes vermelhos, verdes e azuis ao longo da terceira dimensão com valores em 0,1, por exemplo, os componentes de cor do pixel (m, n) são MyImage (m, n, 1) vermelho, MyImage (m, n, 2) verde, MyImage (m, n, 3) blue. Indexed. Imagens indexadas (paletadas) são representadas com uma matriz de índice de tamanho M N e uma matriz de mapa de cor de tamanho K 3. O mapa de cores mantém todas as cores usadas na imagem ea matriz de índice representa os pixels consultando cores no mapa de cores. Por exemplo, se a cor 22 é magenta MyColormap (22, :) 1,0,1. Então MyImage (m, n) 22 é um pixel de cor magenta. Uma imagem binária é representada por uma matriz lógica M N onde os valores de pixel são 1 (verdadeiro) ou 0 (falso).uint8. Esse tipo usa menos memória e algumas operações calculam mais rápido do que com tipos duplos. Para simplificar, este tutorial não discute mais uint8. Grayscale é geralmente o formato preferido para processamento de imagem. Em casos que requerem cor, uma imagem em cores RGB pode ser decomposta e tratada como três imagens em escala de cinza separadas. As imagens indexadas devem ser convertidas para tons de cinza ou RGB para a maioria das operações. Abaixo estão algumas manipulações e conversões comuns. Alguns comandos requerem o Image Toolbox e são indicados com Image Toolbox. Ler e gravar arquivos de imagem O MATLAB pode ler e gravar imagens com os comandos imread e imwrite. Embora um número razoável de formatos de arquivo são suportados, alguns não são. Use imformats para ver o que sua instalação suporta: Ao ler imagens, um problema lamentável é que imread retorna os dados de imagem no tipo de dados uint8, que deve ser convertido em duplo e rescaled antes de usar. Então, em vez de chamar imread diretamente, eu uso a seguinte função M-file para ler e converter imagens: Clique com o botão direito do mouse e salve getimage. m para usar esta função M. Se a imagem baboon. png está no diretório atual (ou em algum lugar no caminho de busca MATLAB), você pode lê-lo com MyImage getimage (baboon. png). Você também pode usar caminhos parciais, por exemplo, se a imagem estiver no diretório atual gtimages com getimage (imagesbaboon. png). Para gravar uma imagem em escala de cinza ou RGB, use Tome cuidado para que MyImage seja uma matriz dupla com elementos em 0,1if incorretamente dimensionado, o arquivo salvo provavelmente ficará em branco. Ao escrever arquivos de imagem, eu recomendo usar o formato de arquivo PNG. Este formato é uma escolha confiável, uma vez que é sem perdas, suporta truecolor RGB e compacta muito bem. Use outros formatos com cuidado. Operações básicas Abaixo estão algumas operações básicas em uma imagem de escala de cinza u. Os comandos que requerem o Image Toolbox são indicados com Image Toolbox. (Nota: Para qualquer matriz, a sintaxe u (:) significa desenrolar u em um vetor de coluna. Por exemplo, se u 1,50,2. Então u (:) é 1052.) Por exemplo, a potência do sinal de imagem é usada em Computando a relação sinal-ruído (SNR) ea relação pico sinal-ruído (PSNR). Dada imagem limpa uclean e ruído contaminado u imagem, Tenha cuidado com a norma. O comportamento é norma (v) no vetor v calcula sqrt (soma (v.2)). Mas a norma (A) na matriz A calcula a norma da matriz L 2 induzida, então a norma (A) certamente não é sqrt (soma (A (:) .2)). No entanto, é um erro fácil usar a norma (A) onde deveria ter sido a norma (A (:)). Filtros lineares A filtragem linear é a técnica fundamental do processamento de sinais. Para introduzir brevemente, um filtro linear é uma operação em que em cada pixel x m, n de uma imagem, uma função linear é avaliada no pixel e seus vizinhos para calcular um novo valor de pixel y m, n. Um filtro linear em duas dimensões tem a forma geral onde x é a entrada, y é a saída, e h é a resposta do impulso do filtro. Diferentes escolhas de h levam a filtros que suavizam, afiam e detectam bordas, para citar algumas aplicações. O lado direito da equação acima é denotado concisamente como h x e é chamado a convolução de h e x. Filtragem do domínio espacial A filtragem linear bidimensional é implementada no MATLAB com conv2. Infelizmente, o conv2 só pode lidar com a filtragem perto dos limites da imagem por preenchimento zero, o que significa que os resultados de filtragem são geralmente inadequados para pixels próximos ao limite. Para contornar isso, podemos preencher a imagem de entrada e usar a opção válida ao chamar conv2. A seguinte função M faz isso. Clique com o botão direito do mouse e salve conv2padded. m para usar esta função M. Aqui estão alguns exemplos: Um filtro 2D h é dito ser separável se ele pode ser expresso como o produto externo de dois filtros 1D h1 e h2. Ou seja, h h1 (:) h2 (:). É mais rápido passar h1 e h2 do que h. Como é feito acima para a janela de média móvel eo filtro Gaussiano. De fato, os filtros de Sobel hx e hy também são separáveisque são h1 e h2 Filtragem de domínio de Fourier A filtragem de domínio espacial com conv2 é facilmente uma operação computacionalmente cara. Para um filtro K K em uma imagem M N, conv2 custa O (MNK 2) adições e multiplicações, ou O (N 4) supondo M N K. Para filtros grandes, a filtragem no domínio de Fourier é mais rápida, já que o custo computacional é reduzido a O (N 2 log N). Usando a propriedade de convolução-multiplicação da transformada de Fourier, a convolução é calculada de forma equivalente por O resultado é equivalente a conv2padded (x, h), exceto próximo ao limite, onde a computação acima usa extensão de limite periódica. A filtragem baseada em Fourier também pode ser feita com a extensão de contorno simétrica, refletindo a entrada em cada direção: (Nota: Um método ainda mais eficiente é a filtragem de sobreposição de FFT. A Ferramenta de Processamento de Sinal implementa a sobreposição FFT-add em uma dimensão em fftfilt .) Filtros não-lineares Um filtro não-linear é uma operação em que cada pixel filtrado ym, n é uma função não linear de xm, n e seus vizinhos. Aqui discutimos brevemente alguns tipos de filtros não-lineares. Filtros de estatística de ordem Se você tiver o Image Toolbox, os filtros de estatística de ordem podem ser executados com ordfilt2 e medfilt2. Um filtro de estatística de ordem classifica os valores de pixel em uma vizinhança e seleciona o quinto maior valor. Os filtros min, max e mediano são casos especiais. Filtros morfológicos Se você tem o Image Toolbox, bwmorph implementa várias operações morfológicas em imagens binárias, como erosão, dilatação, abertura, fechamento e esqueleto. Existem também comandos disponíveis para morfologia em imagens em escala de cinza: imerode. Imidato e imtofato. entre outros. Crie seu próprio filtro Ocasionalmente, queremos usar um novo filtro que o MATLAB não possui. O código abaixo é um modelo para a implementação de filtros. (Nota: Uma afirmação equivocada freqüente é que os loops no MATLAB são lentos e devem ser evitados. Esta vez foi verdade, de volta no MATLAB 5 e anteriores, mas loops em versões modernas são razoavelmente rápido.) Por exemplo, o alfa-aparado médio filtro Ignora os valores mais baixos d 2 e d 2 mais altos na janela e calcula a média dos restantes valores (2 r 1) 2 d. O filtro é um equilíbrio entre um filtro mediano e um filtro médio. O filtro de média alfa-aparado pode ser implementado no modelo como um outro exemplo, o filtro bilateral é o cientista e engenheiros guia para processamento de sinal digital por Steven W. Smith, Ph. D. Capítulo 25: Técnicas Especiais de Imagem Processamento Morfológico de Imagem A identificação de objetos dentro de uma imagem pode ser uma tarefa muito difícil. Uma maneira de simplificar o problema é alterar a imagem de escala de cinza em uma imagem binária. Em que cada pixel é restrito a um valor de 0 ou 1. As técnicas usadas nestas imagens binárias vão por nomes tais como: análise do blob. Análise de conectividade. E processamento de imagens morfológicas (da palavra grega morph. Significado forma ou forma). A base do processamento morfológico está no campo matematicamente rigoroso da teoria dos conjuntos, no entanto, este nível de sofisticação raramente é necessário. A maioria dos algoritmos morfológicos são operações lógicas simples e muito ad hoc. Em outras palavras, cada aplicativo requer uma solução personalizada desenvolvida por tentativa e erro. Isso geralmente é mais uma arte do que uma ciência. Um saco de truques é usado em vez de algoritmos padrão e propriedades matemáticas formais. Aqui estão alguns exemplos. A Figura 25-10a mostra um exemplo de imagem binária. Isso pode representar um tanque inimigo em uma imagem de infravermelho, um asteróide em uma fotografia espacial ou um tumor suspeito em uma radiografia médica. Cada pixel no fundo é exibido como branco, enquanto cada pixel no objeto é exibido como preto. Freqüentemente, as imagens binárias são formadas pelo limiar de pixels de imagem de escala de cinza com um valor maior que um limiar são definidos como 1, enquanto os pixels com um valor abaixo do limiar são definidos como 0. É comum que a imagem de escala de cinza seja processada com técnicas lineares Antes do limiar. Por exemplo, o achatamento da iluminação (descrito no Capítulo 24) pode muitas vezes melhorar a qualidade da imagem binária inicial. As figuras (b) e (c) mostram como a imagem é alterada pelas duas operações morfológicas mais comuns, erosão e dilatação. Em erosão, cada pixel de objeto que está tocando um pixel de fundo é alterado para um pixel de fundo. Em dilatação, cada pixel de fundo que está tocando um pixel de objeto é alterado em um pixel de objeto. A erosão torna os objetos menores e pode quebrar um único objeto em vários objetos. Dilação torna os objetos maiores, e pode mesclar vários objetos em um. Conforme ilustrado em (d), a abertura é definida como uma erosão seguida por uma dilatação. A figura (e) mostra a operação oposta de fechamento. Definida como uma dilatação seguida por uma erosão. Conforme ilustrado por estes exemplos, a abertura remove pequenas ilhas e finos filamentos de pixels de objecto. Da mesma forma, o fechamento remove ilhas e finos filamentos de pixels de fundo. Estas técnicas são úteis para manusear imagens barulhentas onde alguns pixels têm o valor binário errado. Por exemplo, pode-se saber que um objeto não pode conter um furo, ou que a borda de objetos deve ser lisa. A Figura 25-11 mostra um exemplo de processamento morfológico. A figura (a) é a imagem binária de uma impressão digital. Algoritmos foram desenvolvidos para analisar esses padrões, permitindo que as impressões digitais individuais sejam combinadas com as de um banco de dados. Um passo comum nestes algoritmos é mostrado em (b), uma operação chamada esqueletização. Isso simplifica a imagem removendo pixels redundantes que é, alterando pixels apropriados de preto para branco. Isso resulta em cada rebordo sendo transformado em uma linha de apenas um pixel de largura. As Tabelas 25-1 e 25-2 mostram o programa de esqueletização. Mesmo que a imagem da impressão digital seja binária, ela é mantida em uma matriz onde cada pixel pode executar de 0 a 255. Um pixel preto é denotado por 0, enquanto um pixel branco é denotado por 255. Como mostrado na Tabela 25-1, o Algoritmo é composto de 6 iterações que gradualmente erodem as cristas em uma linha fina. O número de iterações é escolhido por tentativa e erro. Uma alternativa seria parar quando uma iteração não faz alterações. Durante uma iteração, cada pixel na imagem é avaliado por ser removível, o pixel atende a um conjunto de critérios para ser alterado de preto para branco. As linhas 200-240 passam por cada pixel na imagem, enquanto a sub-rotina na Tabela 25-2 faz a avaliação. Se o pixel em consideração não é removível, a sub-rotina não faz nada. Se o pixel é removível, a subrotina muda seu valor de 0 para 1. Isso indica que o pixel ainda está preto, mas será alterado para branco no final da iteração. Depois de todos os pixels terem sido avaliados, as linhas 260-300 alteram o valor dos pixels marcados de 1 para 255. Este processo de dois estágios resulta em que as cristas grossas são erodidas de forma igual de todas as direções, em vez de um padrão baseado na forma como as linhas E as colunas são digitalizadas. A decisão de remover um pixel é baseada em quatro regras, conforme contidas na sub-rotina mostrada na Tabela 25-2. Todas essas regras devem ser satisfeitas para que um pixel seja alterado de preto para branco. As primeiras três regras são bastante simples, enquanto a quarta é bastante complicada. Conforme ilustrado na Fig. 25-12a, um pixel na localização R, C tem oito vizinhos. Os quatro vizinhos nas direções horizontal e vertical (rotulados 2,4,6,8) são freqüentemente chamados de vizinhos próximos. Os pixels diagonais (rotulados 1,3,5,7) são correspondentemente chamados vizinhos distantes. As quatro regras são as seguintes: Regra um: O pixel em consideração deve atualmente ser preto. Se o pixel já estiver branco, nenhuma ação precisa ser tomada. Regra dois: Pelo menos um dos pixels vizinhos próximos deve ser branco. Isso garante que a erosão das grossas cristas ocorre a partir do exterior. Em outras palavras, se um pixel é preto, e é completamente rodeado por pixels pretos, é para ser deixado sozinho nesta iteração. Por que usar apenas os vizinhos próximos. Em vez de todos os vizinhos A resposta é simples: executar o algoritmo de ambas as maneiras mostra que ele funciona melhor. Lembre-se, isso é muito comum na tentativa de processamento de imagem morfológica e erro é usado para descobrir se uma técnica funciona melhor do que outra. Regra três: O pixel deve ter mais de um vizinho preto. Se ele tem apenas um, ele deve ser o fim de uma linha, e, portanto, shouldnt ser removido. Regra quatro: Um pixel não pode ser removido se resultar em seus vizinhos sendo desconectado. Isto é assim que cada cume é mudado em uma linha contínua, não um grupo de segmentos interrompidos. Conforme ilustrado pelos exemplos na Fig. 25-12, conectado significa que todos os vizinhos negros se tocam. Da mesma forma, desconectado significa que os vizinhos negros formam dois ou mais grupos. O algoritmo para determinar se os vizinhos são conectados ou desconectados é baseado na contagem das transições de preto para branco entre pixels vizinhos adjacentes, no sentido horário. Por exemplo, se o pixel 1 é preto e o pixel 2 é branco, considera-se uma transição entre preto e branco. Da mesma forma, se o pixel 2 é preto e os pixels 3 e 4 são brancos, esta é também uma transição entre preto e branco. No total, existem oito locais onde pode ocorrer uma transição entre preto e branco. Para ilustrar adicionalmente esta definição, os exemplos em (b) e (c) têm um asterisco colocado por cada transição entre preto e branco. A chave para este algoritmo é que haverá exatamente uma transição de preto para branco se os vizinhos estiverem conectados. Mais de uma dessas transições indica que os vizinhos não estão conectados. Como exemplos adicionais de processamento de imagens binárias, considere os tipos de algoritmos que podem ser úteis após a impressão digital ser esqueletizada. Uma desvantagem deste algoritmo de esqueletização particular é que deixa uma quantidade considerável de fuzz. Ramos curtos que se destacam dos lados de segmentos mais longos. Existem várias abordagens diferentes para eliminar esses artefatos. Por exemplo, um programa pode fazer um loop pela imagem removendo o pixel no final de cada linha. Esses pixels são identificados por ter apenas um vizinho preto. Faça isso várias vezes e o fuzz é removido à custa de tornar cada uma das linhas corretas mais curtas. Um método melhor faria um loop através da imagem que identifica pixels de ramificação (pixels que têm mais de dois vizinhos). Começando com cada pixel de ramo, conte o número de pixels em cada ramo. Se o número de pixels em um desdobramento for menor que algum valor (digamos, 5), declare-o como fuzz e altere os pixels no ramo de preto para branco. Outro algoritmo pode alterar os dados de um bitmap para um formato de mapa vetorial. Isso envolve a criação de uma lista das cristas contidas na imagem e os pixels contidos em cada cume. Na forma mapeada do vetor, cada rebordo na impressão digital tem uma identidade individual, ao contrário de uma imagem composta de muitos pixels não relacionados. Isso pode ser realizado através de loop através da imagem procurando os pontos de extremidade de cada linha, os pixels que têm apenas um vizinho preto. A partir do ponto de extremidade, cada linha é rastreada de pixel para pixel de conexão. Depois que a extremidade oposta da linha é alcançada, todos os pixels rastreados são declarados como sendo um único objeto. E tratados em conformidade em futuros algoritmos.

No comments:

Post a Comment