MATLAB의 노이즈를 제거하기 위해 손상된 이미지를 평균화하는 문제
-
20-09-2019 - |
문제
제로 평균 가우스 첨가제 소음으로 손상된 일부 .jpg 이미지를 평균하고 싶습니다. 검색 후 이미지 매트릭스를 추가하고 합을 행렬 수로 나눕니다. 그러나 결과 이미지는 완전히 검은 색입니다. 일반적으로 이미지 수가 증가하면 결과 이미지가 더 좋아집니다. 그러나 더 많은 이미지를 사용하면 어두워집니다.
800x600 흑백 .jpg 이미지를 사용하고 있습니다. 다음은 내가 사용한 스크립트입니다.
image1 = imread ('PIC1.jpg');
image2 = imread ('PIC2.jpg');
image3 = imread ('PIC3.jpg');
image4 = imread ('PIC4.jpg');
sum = image1 + image2 + image3 + image4;
av = sum / 4;
imshow(av);
해결책
문제는 아마도 이미지 데이터가 모든 유형이라는 것입니다. uint8
, 따라서 그것들을 모두 추가하면 픽셀 값의 255 값으로 채도가 발생하여 대부분 흰색 이미지를 제공하여 이미지 수로 나눌 때 대부분 검은 색으로 보입니다. 이미지를 다른 데이터 유형으로 변환해야합니다. double
, 평균화를 수행 한 다음 다시 변환합니다. uint8
:
% Load your images:
image1 = imread('PIC1.jpg');
image2 = imread('PIC2.jpg');
image3 = imread('PIC3.jpg');
image4 = imread('PIC4.jpg');
% Convert the images to type double and sum them:
imageSum = double(image1) + double(image2) + double(image3) + double(image4);
% Divide by the number of images and convert back to type uint8:
averageImage = uint8(imageSum./4);
% Display the averaged image:
imshow(averageImage);
사이드 참고 : 변수에 기존 기능과 동일한 이름을 제공하지 않아야합니다. 이로 인해 문제/혼란이 발생할 수 있습니다. 이것이 제가 변수를 변경 한 이유입니다 sum
에게 imageSum
(내장 기능이 있습니다 sum
).
다른 팁
대체 솔루션을 사용합니다 Imlincomb 이미지 처리 도구 상자에서 :
I = imlincomb(0.25,I1, 0.25,I2, 0.25,I3, 0.25,I4);
imagesc (AverageMage)를 사용할 수도 있습니다. 자동 스케일 이미지가있는이 기능은 검은 색으로 보이지 않습니다.
제휴하지 않습니다 StackOverflow