-4

히스토그램 평형화로 교정하려고하는 밝기가 감소한 일련의 이미지가 있습니다. 0.8731.000 : 나는 histeq의 출력을 볼 때 나는,이 함수는 그러나히스토그램 예기치 않은 결과를 야기하는 균등화

% Image that I would like to apply histogram equalization to 
C = gallery('wilk',21); 
figure, imagesc(C) 

E = histeq(C); 
figure, imagesc(E); 

작동 방법을 배우고 테스트 데이터에 histeq를 적용, 나는 두 개의 고유 한 값을 가지고 결과를 얻을. 출력이 입력 범위 전체에 미치지 않는 이유는 무엇입니까? 출력에는 두 가지 이상의 고유 한 값이있을 것으로 기대됩니다. 입력 유형 double 또는 single 인 경우

enter image description here

+1

왜 당신은 그냥'에게 imhist'을하지? 이미지를 받아들이고 그림으로 히스토그램을 출력합니다. 또한 히스토그램이 균일화 된 후에'unique (C)'가 반환하는 것은 무엇입니까? – rayryeng

+0

히스토그램 균등화 코드를 보여주십시오. 그 동안, 당신은'histeq'을 시도 했습니까? – rayryeng

+0

아. 방금 입력 내용을 알게되었습니다. 지정한 입력이 히스토그램 균등화를위한 쓰레기이기 때문에 작동하지 않습니다. 다이나믹 레인지와 강도 분포는 매우 작아서 일단 "정상화"하면 범위를 날려 버릴 것입니다. 히스토그램 평형화가 사용되기 전에 어떻게 작동하는지 읽는 것이 좋습니다. 더 진행하기 전에 실제 이미지에서 이것을 시도하십시오. 예를 들어, Image Processing Toolbox 이미지를 사용하십시오 :'C = imread ('pout.tif');'. – rayryeng

답변

2

histeq 설명서에 의하면,이 범위에있을 것으로 예상된다 : [0, 1].

적절한 범위의 강도 값 : 클래스 0의 이미지의 경우 [0, 1], 클래스 uint8의 이미지의 경우 [0, 255], 클래스 uint16의 이미지의 경우 [0, 65535].

귀하의 데이터 정규화하지 않고 유형 double이며,

whos C 

% Name  Size   Bytes Class  Attributes 
% 
% C   21x21    3528 double  

[min(C(:)), max(C(:))] 
% 0 10 

당신은 먼저 정상화해야합니다. 이 작업을 수행 할 수 mat2gray를 사용할 수 있습니다

E = histeq(mat2gray(C)); 

enter image description here

+1

아마'imshow'로 플로팅 할 것입니다. 'imshow'는 수치를 실제 크기 (픽셀 단위)로 만듭니다. 21 x 21이므로 크기가 작습니다. 또한 기본값은'회색 '색상 표입니다. 'imagesc'를 사용하십시오. – Suever

+3

@ 마시 방금 쓴 것은 나에게별로 의미가 없습니다. 우리가 볼 수 없기 때문에 당신의 데이터로 할 수있는 일이 무엇인지 말하기는 어렵습니다. 데이터 수정을 위해 무엇을 시도했는지 보여주는 특정 이미지 처리라는 새로운 질문을 던지십시오. 또한 데이터 자체를 포함하고 예상 출력을 표시하십시오. 이 질문은 간단히'histeq'의 잘못된 사용에 관한 것일뿐입니다 – Suever

+0

''histeq (매트릭스)에서 특정 매트릭스를 적용 할''hgram '을 어떻게 결정할 수 있습니까? 'size (Matrix)'가'1 2093809' 인 경우 등. 나는 평면 ​​히스토그램을 여기에서 얻고 싶지 않다. - -'n = size (pTFD, 2);를 생성한다. hgram = ones (1, n) * prod (크기 (pTFD))/n;'은 리소스가 많습니다. –

관련 문제