Main Content

deconvlucy

Lucy-Richardson 방법을 사용하여 영상 디블러 처리

설명

예제

J = deconvlucy(I,psf)는 점 확산 함수(PSF) psf를 사용한 컨벌루션과 (경우에 따라서는) 가산성 잡음으로 인해 화질이 저하된 영상 I를 복원합니다. 이 알고리즘은 결과 영상 J가 푸아송 통계량에 따라 원래 영상 I의 인스턴스가 될 가능성을 최대화하는 것에 기초합니다.

복원 성능을 개선하기 위해 deconvlucy는 아래에서 설명하는 몇 가지 선택적 파라미터를 지원합니다. 중간 파라미터를 지정하지 않을 경우 []을 자리 표시자로 사용하십시오.

예제

J = deconvlucy(I,psf,iter)은 반복 횟수 iter을 지정합니다.

J = deconvlucy(I,psf,iter,dampar)은 감쇠 임계값 dampar로 지정된 잡음과 비교했을 때 벗어나는 정도가 적은 픽셀에 대해 반복을 억제함으로써 잡음 증폭을 제어합니다. 기본적으로, 감쇠가 발생하지 않습니다.

J = deconvlucy(I,psf,iter,dampar,weight)는 입력 영상 I에서 어떤 픽셀이 복원에 고려될지 지정합니다. weight 배열의 요소의 값은 입력 영상에서 대응되는 위치에 있는 픽셀이 얼마만큼 복원에 고려될지 결정합니다. 예를 들어, 특정 픽셀이 고려되지 않도록 하려면 weight 배열에서 해당 픽셀의 값을 0으로 할당하십시오. 각 픽셀에 할당할 가중치 값을 플랫 필드 보정의 양에 따라 조정할 수 있습니다.

J = deconvlucy(I,psf,iter,dampar,weight,readout)은 카메라 측정값 잡음 readout의 가산성 잡음(예: 배경 잡음 또는 전경 잡음)과 분산을 지정합니다.

J = deconvlucy(I,psf,iter,dampar,weight,readout,subsample)은 영상보다 subsample배 더 미세한 그리드에 PSF가 주어졌을 때 서브샘플링을 사용합니다.

예제

모두 축소

흐릿함(blur) 또는 잡음이 없는 원래 그대로의 영상을 읽어 들여 표시합니다. 이 예제에서는 왼쪽 위 (x,y) 좌표를 (2,50)으로 하여 256×256 크기로 영상을 선택적으로 자릅니다.

I = imread('board.tif');
I = imcrop(I,[2 50 255 255]);
imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

표준편차가 5이고 필터 크기 5×5인 가우스 블러를 나타내는 PSF를 생성합니다.

PSF = fspecial('gaussian',5,5);

영상에서 블러를 시뮬레이션합니다.

blurred = imfilter(I,PSF,'symmetric','conv');

시뮬레이션된 평균 0의 가우스 잡음을 추가합니다.

V = 0.002;
blurred_noisy = imnoise(blurred,'gaussian',0,V);
imshow(blurred_noisy)
title('Blurred and Noisy Image')

Figure contains an axes object. The axes object with title Blurred and Noisy Image contains an object of type image.

deconvlucy를 사용하여 잡음 있는 흐릿한 영상을 복원합니다. 블러 생성에 사용할 PSF를 지정하고 반복 횟수를 5로 줄입니다.

luc1 = deconvlucy(blurred_noisy,PSF,5);
imshow(luc1)
title('Restored Image')

Figure contains an axes object. The axes object with title Restored Image contains an object of type image.

샘플 영상을 만들고 흐리게 처리합니다.

I = checkerboard(8);
PSF = fspecial('gaussian',7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);

가중치 배열을 만들고 몇 가지 선택적 파라미터를 사용하여 deconvlucy를 호출합니다.

WT = zeros(size(I));
WT(5:end-4,5:end-4) = 1;
J1 = deconvlucy(BlurredNoisy,PSF);
J2 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V));
J3 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V),WT);

결과를 표시합니다.

subplot(221);imshow(BlurredNoisy);
title('A = Blurred and Noisy');
subplot(222);imshow(J1);
title('deconvlucy(A,PSF)');
subplot(223);imshow(J2);
title('deconvlucy(A,PSF,NI,DP)');
subplot(224);imshow(J3);
title('deconvlucy(A,PSF,NI,DP,WT)');

Figure contains 4 axes objects. Axes object 1 with title A = Blurred and Noisy contains an object of type image. Axes object 2 with title deconvlucy(A,PSF) contains an object of type image. Axes object 3 with title deconvlucy(A,PSF,NI,DP) contains an object of type image. Axes object 4 with title deconvlucy(A,PSF,NI,DP,WT) contains an object of type image.

입력 인수

모두 축소

흐릿한 영상으로, 임의 차원의 숫자형 배열로 지정됩니다. 영상을 셀형 배열로 지정해 중단된 반복을 활성화할 수도 있습니다. 자세한 내용은 항목을 참조하십시오.

데이터형: single | double | int16 | uint8 | uint16

PSF로, 숫자형 배열로 지정됩니다.

데이터형: single | double | int16 | uint8 | uint16

반복 횟수로, 양의 정수로 지정됩니다.

데이터형: double

감쇠 임계값으로, 숫자형 스칼라로 지정됩니다. 감쇠는 반복 간의 편차가 임계값보다 작은 픽셀에 대해 발생합니다. damparI와 데이터형이 동일합니다.

각 픽셀의 가중치 값으로, [0, 1] 범위의 값으로 구성된 숫자형 배열로 지정됩니다. weight는 입력 영상 I와 크기가 동일합니다. 기본적으로, weight의 모든 요소는 값 1을 가지므로 복원에서 모든 픽셀이 동일하게 고려됩니다.

데이터형: double

잡음으로, 숫자형 스칼라 또는 숫자형 배열로 지정됩니다. readout의 값은 카메라 판독 잡음의 가산성 잡음(예: 전경 및 배경에서 발생하는 잡음)과 분산에 해당합니다. readoutI와 데이터형이 동일합니다.

서브샘플링으로, 양의 스칼라로 지정됩니다.

데이터형: double

출력 인수

모두 축소

디블러 처리된 영상으로, 숫자형 배열 또는 1×4 셀형 배열로 반환됩니다. J(또는 J가 셀형 배열인 경우 J{1})는 I와 데이터형이 동일합니다. 중단된 반복에 대해 J를 셀형 배열로 반환하는 방법에 대한 자세한 내용은 항목을 참조하십시오.

  • deconvlucy를 사용하여, 이전 디컨벌루션이 중지된 지점부터 시작하는 디컨벌루션을 수행할 수 있습니다. 이 기능을 사용하려면 입력 영상 I를 셀형 배열 {I}로 전달하십시오. 이렇게 하면 deconvlucy 함수는 출력 영상 J를 셀형 배열로 반환하며, 이 셀형 배열은 다음번 deconvlucy 호출에 입력 배열로 전달할 수 있습니다. 출력 셀형 배열 J는 다음과 같은 4개의 요소를 포함합니다.

    J{1}은 원본 영상 I를 포함합니다.

    J{2}는 마지막 반복의 결과를 포함합니다.

    J{3}은 마지막에서 두 번째 반복의 결과를 포함합니다.

    J{4}는 반복 알고리즘에 의해 생성되는 배열입니다.

  • 출력 영상 J에는 알고리즘에서 사용되는 이산 푸리에 변환으로 인해 발생하는 링잉 현상이 존재할 수 있습니다. 링잉 현상을 줄이려면 deconvlucy를 호출하기 전에 I = edgetaper(I,psf)를 사용하십시오.

  • deconvlucy는 정규화 없이 PSF를 double형으로 변환합니다.

  • deconvlucy는 입력 영상의 범위를 벗어나는 값을 출력 영상에 반환할 수 있습니다.

참고 문헌

[1] D.S.C. Biggs and M. Andrews, Acceleration of iterative image restoration algorithms, Applied Optics, Vol. 36, No. 8, 1997.

[2] R.J. Hanisch, R.L. White, and R.L. Gilliland, Deconvolutions of Hubble Space Telescope Images and Spectra, Deconvolution of Images and Spectra, Ed. P.A. Jansson, 2nd ed., Academic Press, CA, 1997.

버전 내역

R2006a 이전에 개발됨