Показать полную графическую версию : Яркость пикселя
Mavlyudov
21-05-2005, 00:34
Как нарисовать в делфи гистограмму зависимости количества пикселов от яркости для любой картинки, которую можно поместить в Image1?
В фотошопе это находиться в Image>Histograme. Мне надо сделать что-то наподобие этого. Народ, поделитесь идеями
aESThete
21-05-2005, 09:41
выкопал лабу (кому-то из друзей делал) в свое время было написано для Turbo Pascal 7.0 for DOS
(в то время Delphi в институтах не учили ;))
program Histogram;
uses Crt;
const
xmax = 100; ymax = 100; {размер картинки}
colormax = 65535; {для 16-битной картинки}
histomax = 640; {количество столбцов гистограммы, выводимой в режиме 640х480}
var
image: array[1..xmax, 1..ymax] of word; {для 16-битной картинки}
h: array[1..histomax] of integer;
x, y: integer;
a: real;
k: real;
begin
{здесь загрузка картинки в массив image}
k := histomax / colormax; {коэффициент пересчета из цвета в гистограмму}
for x := 1 to xmax do begin
for y := 1 to ymax do begin
a := image[x, y] * k; {приводим цвет к столбцам, здесь же можно превратить "цвет" в "яркость"}
Inc(h[round(a)]); {прибавляем к соотв. столбцу}
end;
end;
{здесь прорисовка результатов}
end.
предполагается что картинка - 16 бит градаций серого, т.е. это только общая идея, без выделения яркости и разбивки на цвета...
или вам нужен был именно алгоритм превращения номера цвета в яркость?..
hasherfrog
29-05-2005, 23:45
>> гистограмму зависимости количества пикселов от яркости для любой картинки
Сбивает с толку слово "зависимости". Скорее "распределения", да?
Яркость определяется компонентами R, G, B. Возможно, каждая компонента даёт не треть, а какое-то (пропорциональное) количество к яркости - тут я не очень большой знаток. Определяем всю шкалу как 0 - 255*3. Делим её, скажем, на 100 частей. В пределах одного процента получится 7.68 единицы. делаем массив из 100 ячеек, прогоняем для каждой точки картинки h[((R+G+B)*100)/768)]++; Ну а потом надо просто отстроить график.
Кстати, компонента A (прозрачность) также может влиять на яркость, наверное...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC