Ruby ChunkyPNG的标准偏差
我正在尝试使用ChunkyPNG查找图像的对比度。有没有办法使用ChunkyPNG获得图像的标准偏差 查看ChunkyPNG代码,我找不到任何stats模块 但您可以使用以下方法:Ruby ChunkyPNG的标准偏差,ruby,chunkypng,Ruby,Chunkypng,我正在尝试使用ChunkyPNG查找图像的对比度。有没有办法使用ChunkyPNG获得图像的标准偏差 查看ChunkyPNG代码,我找不到任何stats模块 但您可以使用以下方法: image = ChunkyPNG::Image.from_file('any PNG image file') # @return [Hash] some statistics based on image pixels def compute_image_stats(image, &pixel_tran
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)}
我在返回中包括了所有统计数据,因为它们是为标准偏差(sd)计算而计算的 要计算标准偏差的图像参数是什么?像素的颜色?假设只有一个通道(灰度)。感谢您花时间做这件事。真的很有用。我要试试。我有个问题。有没有办法让标准偏差标准化为0到1之间的值。使用ImageMagick标准偏差时,我得到标准偏差:105.973(0.415581),括号值始终在0到1之间。因此,如果乘以100,则是最大值ImageMagick的百分比除以变量可以达到的最大值。在灰度图像中,最大值为255,因此:
105.973/255=0.41558
。