Baixe o app para aproveitar ainda mais
Prévia do material em texto
TRANSFORMAÇÕES INTENSIDADES IMAGENS MÉDICAS 2 Profª. Ana Claudia Patrocínio Maria Vitória Garcia - 11821EBI013 Uberlândia, 12 de Abril de 2023 http://www.feelt.ufu.br/pessoas/docentes/eduardo-lazaro-martins-naves Primeiro teste - código original e parâmetros fornecidos clc; pkg load image; im_in = imread('mamografia 7_2.jpg'); r = 0:255; ## ##%--------------------------------------------------------------------- % transformação de contraste por faixas (os r e s são para definir os intervalos das faixas) r0 = 0 ; s0 = 0; r1 = 100 ; s1 = 80; r2 = 170; s2 = 230; r3 = 255; s3 = 255; %primeira faixa r = r0:r1; a = ( s1 - s0 ) / ( r1 - r0 ); b = s0 - a * r0; s ( 1 + r ) = a * r + b; %segunda faixa r = r1+1:r2; a = ( s2 - s1 ) / ( r2 - r1 ); b = s1 - a * r1; s ( 1 + r ) = a * r + b; %terceira faixa r = r2+1:r3; a = ( s3 - s2 ) / ( r3 - r2 ); b = s2 - a * r2; s ( 1 + r ) = a * r + b; r = 0:255; ## %--------------------------------------------------------------------- %negativo %s( 1 + r ) = 255 - r; %--------------------------------------------------------------------- %identidade %s( 1 + r ) = r; %--------------------------------------------------------------------- %logaritmica %factor = 0.9; %s( 1 + r ) = ( 255 / log( 1 + 255 / factor ) ) * log( 1 + r / factor ); 1 %--------------------------------------------------------------------- %exponencial %factor = 500; %s( 1 + r ) = ( 255 / ( exp( 255 / factor ) - 1 ) ) * ( exp( r / factor ) - 1 ); %--------------------------------------------------------------------- %potencia %factor = 0.5; %s( 1 + r ) = ( 255 / ( 255 .^ factor ) ) * ( r .^ factor ); %============================================================== ======= im_out = s ( im_in + 1); %============================================================== ======= mediaIm_in = mean(im_in(:)) mediaIm_out = mean(im_out (:)) dp_im_in= std(im_in(:)) dp_im_out = std(im_out(:)) %--------------------------------------------------------------------- %show imagem original subplot( 1, 3, 1 ); imshow(uint8 ( im_in ) ); %--------------------------------------------------------------------- %show plot de funcao subplot( 1, 3, 2 ); plot( r , s ); axis( [ 0, 255, 0, 255 ] ); xlabel('r') ylabel('s(r)') %--------------------------------------------------------------------- %show imagem processada subplot( 1, 3, 3 ); imshow(uint8( im_out ) ); %--------------------------------------------------------------------- 2 Valores médios - primeiro teste Fig. 1 - Primeiro Teste. Segundo teste - as faixas foram reduzidas em 50 unidades clc; pkg load image; im_in = imread('mamografia 7_2.jpg'); r = 0:255; ## ##%--------------------------------------------------------------------- % transformação de contraste por faixas (os r e s são para definir os intervalos das faixas) r0 = 0 ; s0 = 0; r1 = 50 ; s1 = 30; r2 = 120; s2 = 180; r3 = 205; s3 = 205; 3 %primeira faixa r = r0:r1; a = ( s1 - s0 ) / ( r1 - r0 ); b = s0 - a * r0; s ( 1 + r ) = a * r + b; %segunda faixa r = r1+1:r2; a = ( s2 - s1 ) / ( r2 - r1 ); b = s1 - a * r1; s ( 1 + r ) = a * r + b; %terceira faixa r = r2+1:r3; a = ( s3 - s2 ) / ( r3 - r2 ); b = s2 - a * r2; s ( 1 + r ) = a * r + b; r = 0:255; ## %--------------------------------------------------------------------- %negativo %s( 1 + r ) = 255 - r; %--------------------------------------------------------------------- %identidade %s( 1 + r ) = r; %--------------------------------------------------------------------- %logaritmica %factor = 0.9; %s( 1 + r ) = ( 255 / log( 1 + 255 / factor ) ) * log( 1 + r / factor ); %--------------------------------------------------------------------- %exponencial %factor = 500; %s( 1 + r ) = ( 255 / ( exp( 255 / factor ) - 1 ) ) * ( exp( r / factor ) - 1 ); %--------------------------------------------------------------------- %potencia %factor = 0.5; %s( 1 + r ) = ( 255 / ( 255 .^ factor ) ) * ( r .^ factor ); %============================================================== ======= im_out = s ( im_in + 1); 4 %============================================================== ======= mediaIm_in = mean(im_in(:)) mediaIm_out = mean(im_out (:)) dp_im_in= std(im_in(:)) dp_im_out = std(im_out(:)) %--------------------------------------------------------------------- %show imagem original subplot( 1, 3, 1 ); imshow(uint8 ( im_in ) ); %--------------------------------------------------------------------- %show plot de funcao subplot( 1, 3, 2 ); plot( r , s ); axis( [ 0, 255, 0, 255 ] ); xlabel('r') ylabel('s(r)') %--------------------------------------------------------------------- %show imagem processada subplot( 1, 3, 3 ); imshow(uint8( im_out ) ); %--------------------------------------------------------------------- Valores médios - segundo teste 5 Fig. 2 - Segundo Teste. Terceiro teste - as faixas foram acrescidas em 50 unidades clc; pkg load image; im_in = imread('mamografia 7_2.jpg'); r = 0:255; ## ##%--------------------------------------------------------------------- % transformação de contraste por faixas (os r e s são para definir os intervalos das faixas) r0 = 0 ; s0 = 0; r1 = 150 ; s1 = 130; r2 = 220; s2 = 255; r3 = 255; s3 = 255; %primeira faixa r = r0:r1; a = ( s1 - s0 ) / ( r1 - r0 ); b = s0 - a * r0; s ( 1 + r ) = a * r + b; %segunda faixa r = r1+1:r2; a = ( s2 - s1 ) / ( r2 - r1 ); b = s1 - a * r1; s ( 1 + r ) = a * r + b; 6 %terceira faixa r = r2+1:r3; a = ( s3 - s2 ) / ( r3 - r2 ); b = s2 - a * r2; s ( 1 + r ) = a * r + b; r = 0:255; ## %--------------------------------------------------------------------- %negativo %s( 1 + r ) = 255 - r; %--------------------------------------------------------------------- %identidade %s( 1 + r ) = r; %--------------------------------------------------------------------- %logaritmica %factor = 0.9; %s( 1 + r ) = ( 255 / log( 1 + 255 / factor ) ) * log( 1 + r / factor ); %--------------------------------------------------------------------- %exponencial %factor = 500; %s( 1 + r ) = ( 255 / ( exp( 255 / factor ) - 1 ) ) * ( exp( r / factor ) - 1 ); %--------------------------------------------------------------------- %potencia %factor = 0.5; %s( 1 + r ) = ( 255 / ( 255 .^ factor ) ) * ( r .^ factor ); %============================================================== ======= im_out = s ( im_in + 1); %============================================================== ======= mediaIm_in = mean(im_in(:)) mediaIm_out = mean(im_out (:)) dp_im_in= std(im_in(:)) dp_im_out = std(im_out(:)) %--------------------------------------------------------------------- %show imagem original subplot( 1, 3, 1 ); imshow(uint8 ( im_in ) ); 7 %--------------------------------------------------------------------- %show plot de funcao subplot( 1, 3, 2 ); plot( r , s ); axis( [ 0, 255, 0, 255 ] ); xlabel('r') ylabel('s(r)') %--------------------------------------------------------------------- %show imagem processada subplot( 1, 3, 3 ); imshow(uint8( im_out ) ); %--------------------------------------------------------------------- Valores médios - terceiro teste Fig. 3 - Terceiro Teste. 8 Discussão Os valores de faixa começaram com os seguintes valores: r0 = 0 ; s0 = 0; r1 = 100 ; s1 = 80; r2 = 170; s2 = 230; r3 = 255; s3 = 255; E a idealização foi fazer o segundo e terceiro teste diminuindo e acrescentando 50 unidades, respectivamente a fim de ter um parâmetro ‘fixo’ a modo de comparação. Sendo assim, o segundo teste, apresentou os seguintes valores: r0 = 0 ; s0 = 0; r1 = 50 ; s1 = 30; r2 = 120; s2 = 180; r3 = 205; s3 = 205; E o terceiro, com: r0 = 0 ; s0 = 0; r1 = 150 ; s1 = 130; r2 = 220; s2 = 255; r3 = 255; s3 = 255; Nota-se, que para o terceiro teste, os valores ficaram limitados a 255, isto porque estamos trabalhando com uma capacidade de 8 bits na qual pode-se ter os valores de pixels variando de 0 a 255, nesse caso, de análise quantitativa pode não ter sido interessante no tratamento da imagem pois aumentou o número de pixels que passará a ter mesmotom da escala de cinza. Quando compara-se os valores de média, tem-se os seguintes resultados. primeiro teste segundo teste terceiro teste Nota-se que a média referente im_out foram reduzindo a cada teste, no segundo teste já era o esperado por estar reduzindo em 50 unidades pela escala, já no terceiro, têm-se essa redução pois houve a concentração de pixels em 255 - o número máximo permitido pela utilização da quantidade de 8 bits - diminuindo assim a diferença dos números de pixels da imagem. Agora para uma análise qualitativa, obteve-se os seguintes resultados das imagens, nota-se que a faixa delimitada no primeiro teste não é interessante para 9 uma análise de possíveis lesões na mama pois não há muita diferenciação dos tons. Primeiro Teste. Já para o segundo teste, a imagem ficou mais uniforme, dificultando também identificar os tecidos, ductos e possíveis lesões, calcificações. Segundo Teste. 10 Apesar de ter agrupado mais pixels para uma menor faixa de valor de cinza, a imagem tornou-se interessante para destaque de diferenciação de tecidos, ductos, lesões e coisas similares que possam estar presentes. Terceiro Teste. 11
Compartilhar