Я хочу измерить среднюю интенсивность пикселей и показатель цветопередачи изображения. Для этого я слежу этот подход (любезно дайте мне знать, есть ли альтернативный подход к такой же):Изображение Пиксельная интенсивность и измерение цветности в Python
а) Вычислить средний Pixel Интенсивность:
im = Image.open('images-16.jpeg')
stat = ImageStat.Stat(im)
r,g,b = stat.mean
mean = sqrt(0.241* (r ** 2) + 0.691* (g ** 2) + 0.068* (b ** 2))
print(mean)
б) Для измерения красочность:
Разделив цветовое пространство в 64 кубических блоков с четырьмя равными перегородками по каждому измерению
w,h=im.size bw,bh = 8, 8 #block size img = np.array(im) sz = img.itemsize shape = (h-bh+1, w-bw+1, bh, bw) strides = (w*sz, sz, w*sz, sz) blocks = np.lib.stride_tricks.as_strided(img, shape=shape, strides=strides) print (blocks[1,1])
Вычислить евклидовы расстояния между геометрическими центрами С я каждого куба я
Not able to compute (say d(a,b)=rgb(Ca)-rgb(Cb))
D1 Распределение генерируется как распределение цвета гипотетического изображения таким образом, что для каждой из 64 точек выборки, то частота 1/64 -
pixels = im.load() all_pixels = [] for x in range(218): #put your block width size for y in range(218): #your block heigh size cpixel = pixels[x, y] all_pixels.append(cpixel)
D2 Распределение вычисляется из заданного изображения путем нахождения частоты встречаемости цвета в пределах каждого из 64 кубиков
How can i do this?
- Вычислить
Earth Mover's Distance: (D1,D2,d(a,b))
- д (а, б) рассчитывается выше
Это правильный способ сделай это? Какие-либо подтверждающие документы для этого? Любая помощь с кодом оценивается. Благодарю.
Для начала я бы объединил r, g, b в яркость для каждого пикселя * перед * вычислением среднего значения. Используйте правильную гамму '** 2.2' и' ** (1/2.2) 'вместо' ** 2' и 'sqrt'. И не забудьте сначала разделить эти значения пикселей на 255. –
@MarkRansom уверен, что попробует ... и для измерения цветности? –
Извините, если бы у меня был совет по цвету, я бы оставил правильный ответ. –