2012-08-28 3 views

답변

7

ImageMagick에는 이미지의 색상 목록과 빈도수를 반환하는 Histogram 메서드가 있습니다. 그것은 제대로 문서화하고 비열한 인터페이스를 가지고,하지만 난 과거에 사용했습니다, 그래서 제공하기 위해 몇 가지 유용한 코드가 있어요 :

my @hist_data = $image->Histogram; 
my @hist_entries; 
# Histogram returns data as a single list, but the list is actually groups of 
# 5 elements. Turn it into a list of useful hashes. 
while (@hist_data) { 
    my ($r, $g, $b, $a, $count) = splice @hist_data, 0, 5; 
    push @hist_entries, { 
     r => $r, 
     g => $g, 
     b => $b, 
     alpha => $a, 
     count => $count, 
    }; 
} 
# Sort the colors in decreasing order 
@hist_entries = sort { $b->{count} <=> $a->{count} } @hist_entries; 

을하지만, 당신이 뭘하려는 건지에 따라 히스토그램은 '외설 t는 풀 컬러 이미지의 경우처럼 유용합니다. 왜냐하면 히스토그램에서 카운트가 분리되어 같은 색상의 약간 다른 색조가 많이 있기 때문입니다. 유용한 사전 처리 단계는 이미지의 복제본에 $image->Segment(colorspace => 'rgb')을 호출하여 유사한 색상의 영역을 찾고 전체 영역을 평균 색상으로 대체하는 것입니다. 그런 다음 Histogram으로 전화하면 더 적은 수의 색상으로 더 많은 수를 표시하고 다소 더 대표적인 데이터를 보게됩니다.

+0

+1 유용한 코드 스 니펫 + 설명 – Thariama

관련 문제