Nie wiem gdzie ten wątek założyć, bo w sumie dotyczy grafiki, ale i może zahaczyć o programowanie, więc ląduje tutaj, w kategorii niejako zbiorczej.
Załóżmy, że w programie ma być widoczny obrazek, który to da się koloryzować (nie mylić z kolorowaniem). Ma on przedstawiać określoną powierzchnię - dla przykładu niech będzie nią powierzchnia dachu, czyli dachówki. Pobrałem sobie przykładową teksturę z dachówkami - wygląda tak:

Pierwszym pomysłem jest przerobienie tej tekstury na półprzezroczysta maskę. Dzięki temu będzie można wypełnić obszar danym kolorem, a następnie namalować na tym obszarze obraz maski. Dlatego też w programie Gimp przygotowałem sobie taką maskę. Pierwszy ktok to desaturacja (przerobienia obrazu na skalę szarości), następnie regulacja poziomów (rozjaśnienie pewnych obszarów do białości), a ostatni to zmiana koloru na alfę (tu: białego). Krok po kroku wygląda to tak:

Po zmianie białego koloru na alfę, otrzymujemy gotową, półprzezroczystą maskę. Dla podglądu - mask.png - możecie się pobawić. Taką maskę można wykorzystać w wymyślony sposób - najpierw malować jednolite tło wybranym kolorem, następnie namalować maskę. Kilka przykładów:

Wygląda bardzo fajnie - idealnie nie jest, ale przygotowałem ją na szybko i można lepiej. Niestety problem pojawia się, jeśli pod maską znajdzie się ciemny kolor - szczegółowość grafiki spada, a dla czarnego tła kompletnie nie widać kształtu dachówek. Od lewej - szare tło, ciemnoszare i prawie czarne:

Tak więc pomysł nie taki dobry, bo spełnia oczekiwania połowicznie - dla jasnych kolorów jest dobrze, ale dla ciemnych i bardzo ciemnych bardzo źle. Wszystko dlatego, że na gotowej masce, półprzezroczyste są tylko czarne piksele, które finalnie przyciemniają kolor tła. Jeśli zmienię czarny kolor na alfę to sytuacja będzie odwrotna - półprzezroczyste będą jedynie białe piksele, więc dla ciemnych teł będzie widać szczegóły, a dla jasnych nie.
Dlatego też chciałbym się dowiedzieć, czy istnieje sposób na przygotowanie takiej maski, aby również dla ciemnych kolorów było po pierwsze widać szczegóły, a po drogie, aby wybrany kolor odzwierciedlany był wiernie? A jeśli półprzezroczysta maska nie nadaje się do tego, to w jaki sposób wykonać taki efekt?
Dodam, że nie muszę korzystać z półprzezroczystej maski. Równie dobrze owe koloryzowanie może działać w ten sposób, że na wejściu dostanie się 24-bitowy obraz (np. w skali szarości), i na podstawie jasności odcieni, obraz ten zostanie przemalowany i wypluty na wyjściu. Problem w tym, że nie wiem w jaki sposób ustalać odcień wybranego koloru na podstawie jasności odcieni szarego, w taki sposób, aby faktura była widoczna zarówno dla koloru białego, czarnego i dowolnego innego.
Ma ktoś jakieś doświadczenie z obróbką obrazów? Prosiłbym o jakieś wskazówki, linki, pomysły - cokolwiek. Mam też pewien pomysł na programowe przemalowywanie obrazu-wzorca w locie, który w międzyczasie spróbuję zaimplementować. Jednak do tego czasu może znajdzie się ktoś ze swoim pomysłem, za co będę wdzięczny.

