[Algorytmy] Filtracja prostych obrazów

matemix
Użytkownik
Użytkownik
Posty: 465
Rejestracja: 10 cze 2008, o 19:38
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 12 razy
Pomógł: 1 raz

[Algorytmy] Filtracja prostych obrazów

Post autor: matemix »

Zagadnienie o które chcę Was zapytać nazywa się chyba filtracją obrazów, jednak nie jestem pewny. Szukam postaci pewnego algorytmu. Problem jest następujący: weźmy pewien dowolny pikselowy obraz o rozmiarach \(\displaystyle{ n}\) na \(\displaystyle{ 2^{n}}\). Jak pomniejszyć ten obraz na obraz o rozmiarach \(\displaystyle{ n-1}\) na \(\displaystyle{ 2^{n-1}}\)?

Domyślam się, że być może znanych jest w informatyce kilka algorytmów-sposobów na które można to zrobić, jednak ja szukam algorytmu który wykonuje przekształcenia w następujący sposób:

Kod: Zaznacz cały

1010	         
0110   
przekształca na:
A na przykład:

Kod: Zaznacz cały

10101010          
01100110	
10010110
przekształca na:

Kod: Zaznacz cały

1010
0110
Mogę podać więcej przykładów, jeżeli będą przydatne. Czy znacie algorytm który działa w taki sposób?
Ostatnio zmieniony 12 wrz 2011, o 10:12 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
abc666

[Algorytmy] Filtracja prostych obrazów

Post autor: abc666 »

A możesz opisać dokładnie jak tworzysz te pomniejszone obrazy? Czy te przykłady masz skądś indziej?
matemix
Użytkownik
Użytkownik
Posty: 465
Rejestracja: 10 cze 2008, o 19:38
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 12 razy
Pomógł: 1 raz

[Algorytmy] Filtracja prostych obrazów

Post autor: matemix »

abc666 pisze:A możesz opisać dokładnie jak tworzysz te pomniejszone obrazy? Czy te przykłady masz skądś indziej?
Powstaje to w dosyć skomplikowany sposób.

Weźmy tablicę liczb o wysokości \(\displaystyle{ p}\) i długości \(\displaystyle{ 2^{p}}\), taką, że w pierwszym wierszu są same jedynki, w drugim wierszu liczby się powtarzają począwszy od liczby pierwszej co dwie liczby, w trzecim liczby powtarzają się co 4 liczby, ogólnie w n-tym co \(\displaystyle{ 2^{n-1}}\) liczb, przy czym te powtarzające się okresowo sekwencje liczb są złożone z nierównych sobie liczb. Ponad to tablica ta spełnia pewne warunki. W każdym n-tym wierszu różnica największej i najmniejszej liczby wynosi \(\displaystyle{ 2^{n-1}-1}\) oraz każda liczba w kolumnie poniżej jest podwojoną wartością liczby powyżej lub podwojoną wartością liczby powyżej do której dodano 1. Ponad to relacje mniejszości i większości pomiędzy pierwszymi \(\displaystyle{ 2^{n-2}}\) liczbami w n-tym wierszu są identyczne jak pomiędzy kolejnymi \(\displaystyle{ 2^{n-2}}\) liczbami oraz identyczne jak pomiędzy \(\displaystyle{ 2^{n-3}}\) liczbami w wierszu nad tymi liczbami. Przykłady:

Kod: Zaznacz cały

1    1   1  1  1  1   1  1
3    2   3  2  3  2   3  2 
6    5   7  4  6  5   7  4
13 10 14 9 12 11 15 8 
albo:

Kod: Zaznacz cały

1    1   1  1  1  1   1  1
3    2   3  2  3  2   3  2 
6    5   7  4  6  5   7  4
12 10 15 9 13 11 14 8 
Jak widać tworzenie takiej tablicy nie jest jednoznaczne, jednoznacznie można natomiast wygenerować kolejne mniejsze części owej tablicy o rozmiarach \(\displaystyle{ n}\) na \(\displaystyle{ 2^{n}}\), mając daną jakąś tablicę liczb. Jeżeli teraz zapiszemy kolejne liczby w takiej tablicy binarnie w kolumnach obok siebie, otrzymamy:

Kod: Zaznacz cały

6 5 7 4

1 1 1 1
1 0 1 0
0 1 1 0
itd.

Zawsze odrzucamy pierwszy wiersz i mamy przykłady które przedstawiłem:

Kod: Zaznacz cały

1 0 1 0
0 1 1 0 
Wiemy teraz, że np. powyższa tablica powstała z tablicy:
bo wiemy jak powstała ta większa tablica, to przekształcenie już jest jednoznaczne. Jak jednak wygenerować podobne przekształcenie dla tablicy nie utworzonej według powyższych zasad, np:

Kod: Zaznacz cały

1 1 0 1
1 1 0 1
0 1 0 1


Dlatego szukam tego algorytmu.
Ostatnio zmieniony 12 wrz 2011, o 10:16 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
ODPOWIEDZ