2009-04-18 3 views
0

다음은 편집을 시도한 코드의 일부인 MATLAB의 deconvolucy입니다.
클래스 유형이 일치하지 않는 DAMPAR에 문제가있는 것으로 보입니다.배열 유형 "DAMPAR"with MATLAB deconvolucy.m

누군가가 도움을 줄 수 있습니까 (예 : deconvolucy.m 에서처럼) 이미지를 호출하는 더 좋은 방법을 알고 있습니까?

[아마도 내가 사용하기 전에 이미지를 배열로 변환해야합니까? 내가 어떻게 그렇게 할]

// - 코드 - //
I = imread (? C : \ 사용자 \ 렘 \ 바탕 화면 \ III \ TIFF \ 69_M.000.tif ','tif 여야를 ');
클래스 (I)
PSF = fspecial ('gaussian', 7,10);
V = .0001;
BlurredNoisy = imnoise (imfilter (I, PSF), 'gaussian', 0, V);
WT = 0 (크기 (I));
WT (5 : 끝 -4,5 : 끝 -4) = 1;
J1 = 디콘 블러시 (BlurredNoisy, PSF);
J2 = deconvlucy (블러 링 된 잡음, PSF, 20, sqrt (V));
J3 = 디콘 블러시 (BlurredNoisy, PSF, 20, sqrt (V), WT);
// ...
...
... //

??? 316 ==> deconvlucy> parse_inputs at 316
함수 deconvlucy에서 DAMPAR은 입력 이미지와 동일한 클래스 여야합니다. 에서

== 오류가> deconvlucy 102 은 [J, PSF, NUMIT, DAMPAR, 판독, 중량, SUBSMPL, sizeI, 분류 된가 numNSdim] = ...

답변

2

하면 화상 판독 한
imread를 사용합니다. 그래서 아마 uint8로 들어오고 있을까요? imread에 대한 도움말은 결과가 tiff 이미지의 일부 순서의 정수가 될 것이라고 말합니다. 그것이 반환되었을 때 나는 어떤 수업을 받았습니까?

그런 다음 이미지를 필터링했습니다. imfilter는 정수 입력 이미지에 대해 정수 이미지를 반환합니다.

다음은 imnoise를 사용하여 잡음을 추가합니다. imnoise에 대한 온라인 도움말에서 내부적으로 이미지를 [0,1] (double) 숫자로 변환하고, 가우스 노이즈를 더한 다음 다시 정수 출력으로 변환합니다. 따라서 흐린 이미지는 여전히 정수 여야합니다. 아마도 uint8 요소 일 것입니다.

fspecial에 대한 도움말에 따르면 PSF에 대한 배정 밀도 출력이 반환됩니다.

당신은 deconvolucy를 두 개의 인수만으로 호출 했으므로 DAMPAR의 기본값을 사용하고 있습니다. (여기서 논쟁의 여지가 없다고 주장 할 것이다.) 논설의 저자는 입력과 유형이 일치하는 기본값을 제공하지 않는 것으로 보인다.) IPT 또는 논쟁의 정도에 대해 충분히 알지 못한다면 두 가지 다른 호출을 사용하여이 코드를 다시 실행하는 것이 좋습니다. 이러한 호출 중 하나가 문제가 해결되지 않은 경우

J1 = deconvlucy(BlurredNoisy,PSF,[],0); 

J1 = deconvlucy(BlurredNoisy,PSF,[],uint8(0)); 

, 그것은 deconvolucy 이미지, BlurredNoisy에 대한 이중 입력을 기대하는 제안합니다. deconvolucy에 대한 온라인 도움말은 여기에 구체적이지 않았습니다. 그것은 N 차원 배열이나 셀 배열 일 수 있다고 말합니다.또한 도움말에서 결과를 숫자 배열이라고 부릅니다. 따라서 나는 deconvolucy에 대한 이미지가 부동 소수점 이미지가 될 것으로 예상됩니다. (내 기준으로 이것은 도움이되는 결함입니다.)

아마도 이미지를 [0,1] 크기로 배율로 확대 해 봅니다. 그러나 그것은 단지 추측입니다. 따라서 다음과 같이됩니다 :

BlurredNoisy = double(BlurredNoisy)/255; 

이 이미지는 원래 클래스의 uint8이라고 가정합니다.