2013-11-27 4 views
0

ChunkyPNG를 사용하여 이미지의 대비를 찾으려고합니다. ChunkyPNG을 사용하여 이미지의 표준 편차를 구할 수있는 방법이 있습니까?ChunkyPNG의 표준 편차

+0

어떤 이미지 매개 변수를 사용하여 표준 편차를 계산 하시겠습니까? –

+0

픽셀의 색상은? 단 하나의 채널 (그레이 스케일)이 있다고 가정합니다. –

답변

2

ChunkyPNG 코드를 보면 통계 모듈을 찾을 수 없습니다. 그들은 표준 편차 (SD) 계산에 계산했기 때문에,

image = ChunkyPNG::Image.from_file('any PNG image file') 

# @return [Hash] some statistics based on image pixels 
def compute_image_stats(image, &pixel_transformation) 
    # compute pixels values 
    data = image.pixels.map {|pixel| yield(pixel)} # apply the pixel convertion 

    # compute stats 
    n   = data.size # sum of pixels 
    mean  = data.inject(:+).to_f/n 
    variance = data.inject(0) {|sum, item| sum += (item - mean)**2}/n 
    sd  = Math.sqrt(variance) # standard deviation 

    {mean: mean, variance: variance, sd: sd} 
end 

# compute stats for grayscale image version 
compute_image_stats(image) {|pixel| ChunkyPNG::Color.grayscale_teint(pixel)} 
# compute stats for blue channel 
compute_image_stats(image) {|pixel| ChunkyPNG::Color.b(pixel)} 

내가 반환에있는 모든 통계를 포함 :

는 그러나 다음과 같은 방법을 사용할 수 있습니다.

+0

시간을내어 주셔서 감사합니다. 정말 유용합니다. 나는 그것을 시도 할 것이다 –

+0

나는 질문이있다. 표준 편차를 0에서 1 사이의 값으로 정규화 할 수있는 방법이 있습니까? ImageMagick 표준 편차를 사용할 때''표준 편차 : 105.973 (0.415581)'''이 발생하고 괄호 값은 항상 0 따라서 1을 100으로 곱하면 최대 값의 백분율이됩니다. –

+0

ImageMagick은 변수가 도달 할 수있는 최대 값으로 나눕니다. 그레이 스케일 이미지에서 최대 값은 255이므로'105.973/255 = 0.41558'입니다. –