Strona 1 z 2
graficzna prezentacja rozkładu jasności fotografii cyfrowej
: 07 cze 2009 20:17
autor: master1985
Witam
mam taki problem. muszę opracować w labwindows program, który realizując operację na bitmapach, przeprowadzi analizę obrazu pod kątem rozkładu jasnosci. Wyniki analizy należy zaprezentować w formie histogramu. Czy ktoś mógłby dać mi jakąś wskazówkę jak się za to zabrać??
Z góry dzięki za pomoc
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 16 cze 2009 13:15
autor: maciekwp
Witaj,
Ciekawe zagadnienie gdybym nie miał co z czasem zrobić to sam bym poeksperymentował ale do rzeczy:
Funkcje biblioteczne LabWindowsa operują na bitmapach, które zapisywane są w pamięci jako tablice. Jest ich tam kilka ale nas interesuje tablica koloru w postaci RGB (zakładam że chodzi o fotografie kolorowe czyli bitmapy o głębi koloru 16M, w skali szarości jest jeszcze łatwiej).
Cały problem sprowadza do odczytania poszczególnych składowych kolorów (zapisane szesnastkowo w przedziale 000000 do FFFFFF, każda składowa przyjmuje wartości od 0 do 255 lub 00 do FF jak kto woli) kolejno każdego piksela i zależnie od potrzeb policzenie histogramów dla każdej składowej (koloru) lub w ogólnym przypadku na podstawie średniej składowych RGB (tu mała uwaga: histogram na podstawie średniej nie daje pełnej informacji o bitmapie kolorowej i w pewnych sytuacjach może być mylący).
Tak w skrócie wygląda procedura.
Jeśli napisałem coś nie jasno to pytaj.
Pozdrawiam i życzę powodzenia w walce z pikselami...
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 17 cze 2009 06:36
autor: master1985
Witam
Dzięki za zainteresowanie tematem.
Czy jest jakaś gotowa funkcja w LabWindows, która potrafi wyciągnąć poszczególne kolory, czy trzeba to zrealizować w pętlach?
Zastanawiam się tylko czy po przejściu na rozkład RGB nie trzeba rozbić jeszcze tego na YUV.
Dzięki i pozdrawiam
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 17 cze 2009 12:22
autor: maciekwp
To jaki zrobisz histogram zależy wyłącznie od Ciebie i Twoich potrzeb.
Histogram ze średniej RGB jest stosowany np. w aparatach cyfrowych (o ile mi wiadomo), czy stosuje się inne (pewnie tak - przetwarzanie obrazów) tego nie wiem.
Co do sposobu liczenia ja bym osobiście zrobił w pętli, bo można za jednym zamachem zrobić wektory dla trzech składowych plus wektor dla średniej i przy okazji konwersję typów na "double" bo na takim typie operuje funkcja "histogram" w LW.
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 17 cze 2009 12:42
autor: maciekwp
Przykład...
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 17 cze 2009 16:02
autor: jogurt_owocowy
Warto się też zastanowić i doprecyzować czy jasność rozumieć jako średnią z wartości składowych RGB czy (co bardziej prawdopodobne) jako składową
L przestrzeni HSL (Hue-Saturation-Lightness) i obliczyć ją na podstawie składowych RGB z odpowiedniego
wzoru.
PS. Ładny rysunek

Jak go zapiszesz do PNG, będzie jeszcze ładniejszy - nie będzie ograniczony do 256 kolorów.
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 19 cze 2009 05:53
autor: master1985
Wydaje mi się że pod pojęciem jasności należy rozumieć średnią HSL. Ale to już mniejszy problem, ponieważ jak napisał jogurt_owocowy są gotowe wzory na wyliczenie średniej HSL z rozkładu RGB. Ja tylko chciałbym się dowiedzieć, którymi funkcjami z LabWindows wyciągnąć rozkład RGB.
Wystarczy mi jakaś prosta procedura, która dokona rozkładu jednego koloru, a z dwoma następnymi już sobie poradzę.
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 23 cze 2009 06:18
autor: maciekwp
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 27 cze 2009 13:25
autor: master1985
Wielkie dzięki za pomoc
Lada moment będę siadał do projektu, także napewno to wykorzystam
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 19 lip 2009 15:05
autor: master1985
Witam
Mam problem z funkcją:
"AllocBitmapDataEx"
Czy ta funkcja wymaga czegoś w rodzaju podwójnego wskaźnika?
Jeśli tak to w jaki zposób zrealizować to w LW ??
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 21 lip 2009 02:31
autor: maciekwp
Nie jestem pewien o co ci chodziło ale zakładam że o sposób deklaracji zmiennych:
Kod: Zaznacz cały
int *colors
= NULL; unsigned char *bits
= NULL; unsigned char *mask
= NULL; unsigned char *alpha
= NULL;
Jeśli się mylę to sprecyzuj w czym jest problem.
graficzna prezentacja rozkładu jasności fotografii cyfrowej
: 27 lip 2009 09:40
autor: master1985
Dzięki za podpowiedź, rzeczywiście to o to chodziło. Początkowo nie domyśliłem się, że to chodzi o sposób deklaracji zmiennych.
Ale mam jeszcze pytanie o inną rzecz.
Czy po wyciągnięciu składowych kolorów muszę zdeklarować kolejną tablicę w celu uzyskania histogramu? jeśli tak, to w jaki sposób to zrobić?
Z góry dzięki za wskazówkę
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 06 sie 2009 16:43
autor: maciekwp
Histogram liczymy funkcją "Histogram":
Kod: Zaznacz cały
Histogram (tablicadanych, iloscelem, 0.0, 255, histogram, osXhistogramu, 256);
tablicadanych (double) - dane wyciągnięte z tablicy RGB
iloscelem - ilość elementów w
tablicadanych (szerokość*wysokość obrazka)
0.0, 255.0 - min, max wartość zakresu histogramu (jak wartości w tablicy danych)
histogram, osXhistogramu (int, double) - tablice wynikowe funkcji histogram o 256 elementach ilość elementów (przedziałów) określa ostatni parametr
Należy pamiętać o konwersji typu danych wejściowych z
unsigned char na
double bo na takim typie operuje funkcja Histogram
Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 08 sie 2009 22:40
autor: master1985
Dzięki za odpowiedzi. Mam nadzieję, że nie masz mnie jeszcze dosyć
Mam jeszcze parę pytań:
1) czy do konwersji danych z typu unsigned char do double użyć funkcji "atof" bądź "strtod" czy jeszcze jakiejś innej?
2) Dlaczego pierwszy z parametrów funkcji "histogram" czyli "tablicadanych" po kompilacji wyrzuca błąd "argument to small"
3) do wyznaczenia poszczególnych rozkładów kolorów na obiekcie "graph" użyć funkcji "plotxy" czy jakiejs innej?
Mam nadzieję, że to tyle

Re: graficzna prezentacja rozkładu jasności fotografii cyf
: 08 sie 2009 23:15
autor: maciekwp
W telegraficznym skrócie:
1. Najprościej przez rzutowanie:
2. Dołącz linijkę kodu bo nie mam pojęcia co ci odpowiedzieć.
3. Jak najbardziej plotxy bo Histogram daje dwie tablice X i Y (ale przy równomiernych przedziałach jak w tym przypadku wystarczy ploty a nawet może być plotstripchart).