graficzna prezentacja rozkładu jasności fotografii cyfrowej
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
graficzna prezentacja rozkładu jasności fotografii cyfrowej
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
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
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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...
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...
w palcu siła...
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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
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
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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.
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.
w palcu siła...
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
Przykład...
Ostatnio zmieniony 13 sie 2009 14:55 przez maciekwp, łącznie zmieniany 2 razy.
w palcu siła...
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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.
PS. Ładny rysunek Jak go zapiszesz do PNG, będzie jeszcze ładniejszy - nie będzie ograniczony do 256 kolorów.
Ostatnio zmieniony 17 cze 2009 16:07 przez jogurt_owocowy, łącznie zmieniany 1 raz.
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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ę.
Wystarczy mi jakaś prosta procedura, która dokona rozkładu jednego koloru, a z dwoma następnymi już sobie poradzę.
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
Ostatnio zmieniony 23 cze 2009 06:19 przez maciekwp, łącznie zmieniany 1 raz.
w palcu siła...
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
Re: graficzna prezentacja rozkładu jasności fotografii cyf
Wielkie dzięki za pomoc
Lada moment będę siadał do projektu, także napewno to wykorzystam
Lada moment będę siadał do projektu, także napewno to wykorzystam
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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 ??
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 ??
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
Nie jestem pewien o co ci chodziło ale zakładam że o sposób deklaracji zmiennych:
Jeśli się mylę to sprecyzuj w czym jest problem.
Kod: Zaznacz cały
int *colors
= NULL; unsigned char *bits
= NULL; unsigned char *mask
= NULL; unsigned char *alpha
= NULL;
w palcu siła...
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
graficzna prezentacja rozkładu jasności fotografii cyfrowej
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ę
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ę
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
Histogram liczymy funkcją "Histogram":
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
Kod: Zaznacz cały
Histogram (tablicadanych, iloscelem, 0.0, 255, histogram, osXhistogramu, 256);
Należy pamiętać o konwersji typu danych wejściowych z unsigned char na double bo na takim typie operuje funkcja Histogram
w palcu siła...
-
- Posty: 12
- Rejestracja: 07 cze 2009 20:08
- Kontakt:
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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
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
- maciekwp
- Posty: 46
- Rejestracja: 03 kwie 2007 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Warszawa
Re: graficzna prezentacja rozkładu jasności fotografii cyf
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).
1. Najprościej przez rzutowanie:
Kod: Zaznacz cały
zmienna_double = (double)zmienna_char;
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).
w palcu siła...