Baixe o app para aproveitar ainda mais
Prévia do material em texto
RESTAURAÇÃO IMAGENS MÉDICAS 2 Profª. Ana Claudia Patrocínio Maria Vitória Garcia - 11821EBI013 Uberlândia, 29 de Maio de 2023 http://www.feelt.ufu.br/pessoas/docentes/eduardo-lazaro-martins-naves Passo 1: Utilizando o ImageJ Imagem Ruidosa 1 Imagem Ruidosa 2 Imagem Ruidosa 3 1 Passo 2: Testagem dos Filtros Imagem Ruidosa 1 Código clear all; clc; pkg load image; im_in = imread('Imagem Simulada - gaussiano.jpg'); im_orig = imread('Imagem Simulada_8bits.jpg'); % Filtro de Média filtro_media = fspecial('average', [3 3]); im_media = imfilter(im_in, filtro_media); % Filtro de Mediana im_mediana = medfilt2(im_in); % Filtro de Mínimo (substituído por ordfilt2) filtro_minimo = ones(3, 3); im_minimo = ordfilt2(im_in, 1, filtro_minimo); % Subtração e cálculo da média subtracao_media = double(im_orig) - double(im_media); subtracao_mediana = double(im_orig) - double(im_mediana); subtracao_minimo = double(im_orig) - double(im_minimo); media_subtracao_media = mean(subtracao_media(:)); media_subtracao_mediana = mean(subtracao_mediana(:)); media_subtracao_minimo = mean(subtracao_minimo(:)); % Cálculo do PSNR em relação à imagem original psnr_media_orig = psnr(im_orig, im_media); psnr_mediana_orig = psnr(im_orig, im_mediana); psnr_minimo_orig = psnr(im_orig, im_minimo); % Cálculo do PSNR em relação à imagem ruidosa psnr_media_ruidosa = psnr(im_in, im_media); psnr_mediana_ruidosa = psnr(im_in, im_mediana); psnr_minimo_ruidosa = psnr(im_in, im_minimo); % Plota as imagens figure; subplot(2,3,1); imshow(im_in); title('Imagem Ruidosa'); subplot(2,3,2); 2 imshow(im_orig); title('Imagem Original'); subplot(2,3,4); imshow(im_media); title('Filtro de Média'); subplot(2,3,5); imshow(im_mediana); title('Filtro de Mediana'); subplot(2,3,6); imshow(im_minimo); title('Filtro de Mínimo'); Resultados 3 Imagem Ruidosa 2 Código clear all; clc; pkg load image; im_in = imread('Imagem Simulada - ruidosa.jpg'); im_orig = imread('Imagem Simulada_8bits.jpg'); % Filtro de Média filtro_media = fspecial('average', [3 3]); im_media = imfilter(im_in, filtro_media); % Filtro de Mediana im_mediana = medfilt2(im_in); % Filtro de Mínimo (substituído por ordfilt2) filtro_minimo = ones(3, 3); im_minimo = ordfilt2(im_in, 1, filtro_minimo); % Subtração e cálculo da média subtracao_media = double(im_orig) - double(im_media); subtracao_mediana = double(im_orig) - double(im_mediana); subtracao_minimo = double(im_orig) - double(im_minimo); media_subtracao_media = mean(subtracao_media(:)); media_subtracao_mediana = mean(subtracao_mediana(:)); media_subtracao_minimo = mean(subtracao_minimo(:)); % Cálculo do PSNR em relação à imagem original psnr_media_orig = psnr(im_orig, im_media); psnr_mediana_orig = psnr(im_orig, im_mediana); psnr_minimo_orig = psnr(im_orig, im_minimo); % Cálculo do PSNR em relação à imagem ruidosa psnr_media_ruidosa = psnr(im_in, im_media); psnr_mediana_ruidosa = psnr(im_in, im_mediana); psnr_minimo_ruidosa = psnr(im_in, im_minimo); % Cálculo da média do resultado da subtração media_resultado_subtracao = mean(subtracao_media(:)); 4 % Plota as imagens figure; subplot(2,3,1); imshow(im_in); title('Imagem Ruidosa'); subplot(2,3,2); imshow(im_orig); title('Imagem Original'); subplot(2,3,4); imshow(im_media); title('Filtro de Média'); subplot(2,3,5); imshow(im_mediana); title('Filtro de Mediana'); subplot(2,3,6); imshow(im_minimo); title('Filtro de Mínimo'); Resultados 5 Imagem Ruidosa 3 Código clear all; clc; pkg load image; im_in = imread('Imagem Simulada - sal e pimenta.jpg'); im_orig = imread('Imagem Simulada_8bits.jpg'); % Filtro de Média filtro_media = fspecial('average', [3 3]); im_media = imfilter(im_in, filtro_media); % Filtro de Mediana im_mediana = medfilt2(im_in); % Filtro de Mínimo (substituído por ordfilt2) filtro_minimo = ones(3, 3); im_minimo = ordfilt2(im_in, 1, filtro_minimo); % Subtração e cálculo da média subtracao_media = double(im_orig) - double(im_media); subtracao_mediana = double(im_orig) - double(im_mediana); subtracao_minimo = double(im_orig) - double(im_minimo); media_subtracao_media = mean(subtracao_media(:)); media_subtracao_mediana = mean(subtracao_mediana(:)); media_subtracao_minimo = mean(subtracao_minimo(:)); % Cálculo do PSNR em relação à imagem original psnr_media_orig = psnr(im_orig, im_media); 6 psnr_mediana_orig = psnr(im_orig, im_mediana); psnr_minimo_orig = psnr(im_orig, im_minimo); % Cálculo do PSNR em relação à imagem ruidosa psnr_media_ruidosa = psnr(im_in, im_media); psnr_mediana_ruidosa = psnr(im_in, im_mediana); psnr_minimo_ruidosa = psnr(im_in, im_minimo); % Cálculo da média do resultado da subtração media_resultado_subtracao = mean(subtracao_media(:)); % Plota as imagens figure; subplot(2,3,1); imshow(im_in); title('Imagem Ruidosa'); subplot(2,3,2); imshow(im_orig); title('Imagem Original'); subplot(2,3,4); imshow(im_media); title('Filtro de Média'); subplot(2,3,5); imshow(im_mediana); title('Filtro de Mediana'); subplot(2,3,6); imshow(im_minimo); title('Filtro de Mínimo'); Resultados 7 Discussão PSNR Imagem Ruidosa 1 Imagem Ruidosa 2 Imagem Ruidosa 3 psnr_med_orig 22.801 19.262 25.050 psnr_med_ruidosa 23.146 20.318 17.359 psnr_mediana_orig 23.470 19.804 43.158 8 psnr_mediana_ruidosa 22.830 20.000 16.745 psnr_minimo_orig 21.786 19.079 20.111 psnr_minimo_ruidosa 18.216 15.351 15.283 Levando em consideração que o PSNR é uma métrica amplamente utilizada para avaliar a qualidade de uma imagem em relação a uma imagem de referência. O psnr compara as imagens original e as processadas - no caso adicionada a ruídos e posteriormente filtragem. Quanto maior o valor de PSNR, maior é a semelhança entre as imagens, indicando assim uma menor perda de informação, detalhamento e distorção. Sendo assim, na med_original a Imagem Ruidosa 3 é a que menos se distorceu entre elas, porém estão todas praticamente na mesma casa decimal o que mantém longe da realidade da original apresentada. Os valores, exceto a pnsr_media_orig da Imagem Ruidosa 3, se mantiveram na mesma região e longe de atingir uma maior fidelidade à imagem original. E isso também é possível perceber na análise visual quando é possível identificar os borramentos, pontilhados causados pelos ruídos entre outros. Média Imagem Ruidosa 1 Imagem Ruidosa 2 Imagem Ruidosa 3 media_resultado_subtracao -15.168 -23.051 -6.2382 media_subtracao_media -15.168 -23.051 -6.2382 media_resultado_mediana -13.350 -20.737 -0.4840 media_resultado_minimo 7.7713 9.3747 7.1387 A média mostra as diferenças entre os pixels das imagens originais e as imagens filtradas, podendo assim analisar a eficácia dos filtros. Ao calcular a média dessas diferenças, é possível ter uma ideia do nível médio de alteração entre as imagens antes e depois da aplicação dos filtros. Valores mais baixos indicam uma menor diferença média, o que geralmente é desejável para uma boa filtragem de imagens. A partir disso e uma análise visual e quantitativa, identificamos que em todos os parâmetros a imagem ruidosa 3 foi a que mais teve benefícios em relação a sua filtragem, apresentando valores de média mais baixos quando comparada as outras duas imagens. 9
Compartilhar