A imagem original, que é obtida pela plataforma, classifica-se como uma imagem RGB, ou seja, é constituída por um sistema formado pelas cores vermelho, verde e azul. Este tipo de imagens é constituído por três matrizes separadamente para cada cor, normalizadas no intervalo [0,1]. No modelo RGB e através desta normalização, cada cor pode ser descrita pela indicação da quantidade de vermelho, verde e azul que contém. Cada uma pode variar entre o mínimo (preto) e máximo (branco) [84], [85].
Sendo assim, para a realização da deteção da cor pretendida, funcionalidade de total relevância para o software, definiram-se primeiramente os três planos, referentes à imagem RGB (R=1; G=2; B=3), e para cada plano aplicaram-se as operações que permitiram identificar e segmentar cada cor, fazendo com que todos os pixéis de cor diferente tomassem o valor 1 no intervalo [0,1], referente à cor branca.
Uma das funcionalidades essenciais para esta deteção foi a operação
rgb2gray, responsável por converter a imagem RGB numa imagem à escala de
cinzentos, eliminando a matiz e a saturação, porém retendo a intensidade da mesma. Após realizar esta operação, aplicou-se a funcionalidade imsubtract, responsável pela substração de cada elemento presente em duas matrizes diferentes, mas com dimensões iguais, retornando essa mesma diferença (output) numa nova matriz. Através desta operação, foi realizada uma diferença entre cada plano de cor RGB da imagem isoladamente, e a imagem anteriormente convertida a uma escala de cinzentos. A imagem daqui resultante (Figura 42) apresenta cada plano RGB representado em tons de cinzentos, mantendo a intensidade dos pixéis constituintes desse mesmo plano de cor. Desta subtração, todos os pixéis que contenham valores externos ao plano definido para a deteção são anulados e representados a preto.
Figura 42 - Representação da segmentação de uma imagem original (A) através das operações rgb2gray e imsubtract, individualizadas para cada plano de cor: B) Vermelho; C) Verde e D) Azul.
Aplicou-se seguidamente a operação im2bw, de modo a converter a imagem que se encontrava numa escala de cinzentos para uma imagem binária. Este tipo de imagens apresentam apenas dois tipos de valores para cada pixel, resultando daqui
70 uma imagem monocromática. A conversão para este tipo de imagens é fundamental para a possibilidade de limiarização (ou thresholding), que consiste basicamente em separar os vários grupos de uma imagem, consoante a sua intensidade. Ao ser definido um limiar, os grupos de pixéis com intensidades idênticas são separados dos restantes [84], [85].
A funcionalidade im2bw, através da especificação de um limiar entre 0 a 1, permite então substituir e atribuir a todos os pixéis da imagem que sejam maiores que esse mesmo nível, o valor 1 (branco) e todos os restantes pixéis passam a ter o valor 0 (preto). Como se poderá verificar posteriormente, na interface pretendeu-se aplicar uma funcionalidade que permitisse ao utilizador definir livremente este limiar, contudo para a exemplificação do resultado da aplicação da operação im2bw, foi definido um nível de threshold de 0.05. A Figura 43 ilustra a aplicação da funcionalidade previamente explicada.
Figura 43 - Representação da limiarização de uma imagem original (A) através da operação im2bw, com um limiar de 0.05 para cada plano de cor: B) Vermelho; C) Verde e
D) Azul.
De seguida, para que na apresentação da imagem segmentada surja a cor referente ao plano que se pretende segmentar, aplicou-se a função immultiply, responsável por multiplicar cada elemento de duas matrizes diferentes, mas de iguais dimensões, retornando como produto da operação uma nova matriz. No presente caso, multiplicou-se a matriz anteriormente limiarizada para cada plano de cor pela imagem original (em bruto). Para cada plano de cor, definiu-se ainda que todos os pixeis não pertencentes ao mesmo, iriam ser representados a branco, já que com o fundo preto as cores não ficavam tão perceptiveis..
Por fim, para a apresentação da imagem resultante de toda a segmentação realizada, utilizou-se a função cat (concatenate) de forma a promover a união dos três planos RGB, anteriormente isolados, numa única matriz. Desta última operação, resultaram as imagens que se seguem.
Capítulo 5 – Desenvolvimento do software
71 Figura 44 - Representação das imagens resultantes de toda a segmentação efetuada em que: A) apresenta a imagem original; e B,C E D) Representam a deteção de cada um dos
planos de cor, vermelho, verde e azul, respetivamente.
Após realizada a deteção dos vários planos de cor, decidiu-se ainda complementar estas operações com uma função que permitisse fundir a imagem anteriormente detetada com uma imagem onde se notassem claramente os contornos da planta do pé, de modo a ser possível ao utilizador identificar rapidamente em que regiões plantares existe uma maior temperatura e comparar os pés opostos em áreas idênticas. Para a realização desta fusão de imagens, procedeu-se primeiramente à conversão da imagem original para uma imagem HSV, como se pode verificar na Figura 45, formada pelas componentes matiz (hue), saturação (saturation) e valor (value), através da função rgb2hsv. Posteriormente extraiu-se cada componente HSV separadamente, já que para esta fusão, a imagem que permite uma melhor perceção dos contornos e das várias regiões da planta do pé é adquirida através da componente isolada value do sistema anteriormente descrito.
Figura 45 - Representação da imagem HSV, convertida através da função rgb2hsv (A) e extração de cada componente: matiz (B), saturação (C) e valor (D).
A fusão das duas imagens foi realizada através do imfuse que combina as duas imagens numa só; neste caso a imagem resultante da extração do componente value da imagem HSV anterior e a imagem após a deteção das cores. Na Figura 40 é possível visualizar a imagem resultante (Figura 40-D) através da fusão entre as imagens referentes à deteção da cor pretendida (Figura 40-B, para o plano de cor verde) e extração do componente value da imagem original (Figura 40-A), que foi previamente convertida para uma imagem HSV (Figura 40-B).
A B C D
72 Figura 46 - A) Representação da imagem original; B) Imagem após ser realizada a deteção de cor, neste caso do plano referente à cor verde; C) Imagem relativa à extração da componente value da conversão para HSV; D) Fusão entre as imagens representadas
em B e C através da função imfuse.