Wojciech Czerski s20458 i Kinga Kalbarczyk s20474
Ten projekt ma na celu przeprowadzenie rekonstrukcji obrazu przy użyciu algorytmu recon_mm2
w MATLAB. Algorytm wykorzystuje narzędzia Wavelet Toolbox do przetwarzania obrazów.
Zmodyfikowane na potrzeby projketu zostały pliki:
W folderze results
zawarte są wyniki.
Celem tego projektu jest rekonstrukcja obrazu przy użyciu algorytmu recon_mm2
, który wykorzystuje transformację falkową atrous. Algorytm przyjmuje obraz wejściowy i wykonuje analizę wieloskalową, używając transformacji falkowej do dekompozycji obrazu na różne pasma częstotliwościowe. Następnie stosuje zmodyfikowaną wersję transformacji falkowej atrous, aby wzmocnić konkretne detale i cechy obrazu. Ostatecznie algorytm odtwarza obraz przy użyciu odwrotnej transformacji falkowej.
Aby uruchomić ten projekt, będziesz potrzebować:
- MATLAB z dostępem do narzędzi Wavelet Toolbox.
- Obraz wejściowy do rekonstrukcji.
-
Otwórz MATLAB i upewnij się, że masz dostęp do narzędzi Wavelet Toolbox.
-
Ustaw katalog roboczy na lokalizację plików projektu.
-
Wczytaj:
- obraz wejściowy do MATLAB. Możesz użyć funkcji
image_name = 'twoja_nazwa_obrazka.png';
, aby wczytać obraz z pliku. - ustal liczbę poziomów za pomocą
levels = twoja_liczba
- ustal progi za pomocą
threshold = [liczba1, liczba2, ...]
Pamiętaj, aby liczba progów miała taką samą długość co liczba poziomów !
levels = threshold.length
- obraz wejściowy do MATLAB. Możesz użyć funkcji
-
Uruchom skrypt
recon_mm2
w MATLAB. Skrypt ten implementuje algorytm rekonstrukcji obrazu przy użyciu funkcji "dyadup" z narzędzi Wavelet Toolbox. -
Jeśli napotkasz błąd związanym z narzędziami Wavelet Toolbox, upewnij się, że masz wymagane licencje lub spróbuj alternatywnych technik rekonstrukcji obrazu dostępnych w MATLAB.
-
Przejrzyj wyjściowy obraz. Odtworzony obraz zostanie wyświetlony w oknie figury MATLAB.
-
Eksperymentuj z różnymi parametrami (
levels
,threshold
) i obrazami wejściowymi (image_name
), aby uzyskać pożądane rezultaty.
Poniżej znajduje się przykładowe użycie projektu.
W oknie poleceń MATLAB wprowadź następujące polecenie:
image_name = 'Lena.bmp';
levels = 3;
threshold = [25, 25, 10];
recon_mm2(levels, threshold, image_name);
Reconstructed Image from the Modulus Maxima - SNR = 17.8953 dB
Wyliczony stopień kompresji = 99.6826
Wyliczony stopień kompresji wynosi 99.6826. Oznacza to, że model osiągnął wysoki stopień kompresji, co jest pozytywnym wynikiem. Im wyższy stopień kompresji, tym mniejsze zajętość danych, co może być korzystne w przypadku przechowywania i przesyłania obrazów.
SNR wynosi 17.8953 dB. SNR jest miarą jakości rekonstrukcji obrazu i informuje o stosunku sygnału obrazu do poziomu szumu. Wyższy SNR oznacza lepszą jakość rekonstrukcji, gdzie większa część informacji obrazowej została zachowana. Wartość 17.8953 dB wskazuje na przyzwoitą jakość rekonstrukcji, choć może być jeszcze pole do poprawy.
Ten model osiągnął wysoki stopień kompresji, co jest korzystne z punktu widzenia efektywnego wykorzystania miejsca, ale jakość rekonstrukcji może być dalej doskonalona w celu zwiększenia SNR i zachowania większej liczby detali obrazu.
Sekcja ta zawiera krótkie podsumowanie celu i zawartości dokumentacji. Jej celem jest przedstawienie czytelnikowi informacji na temat tego, czego dotyczy dokumentacja oraz jakie informacje i zasoby mogą zostać znalezione w dokumencie. W tej sekcji opisuje się główny temat dokumentacji, czyli w przypadku powyższej dokumentacji dla funkcji mm_atrous_lena
i recon_mm2
, ich funkcje, parametry, wyniki i inne istotne informacje, które czytelnik może znaleźć w dokumentacji.
Funkcja recon_mm2
jest odpowiedzialna za rekonstrukcję obrazu przy użyciu algorytmu 'mm_atrous_lena' z zastosowaniem transformacji falkowej. Przyjmuje trzy argumenty: lvl
(poziomy dekompozycji), Threshold
(progi progowania) i image_name
(nazwa pliku obrazu wejściowego).
lvl
- Liczba poziomów dekompozycji.Threshold
- Próg progowania lub wektor progów dla każdego poziomu dekompozycji.image_name
- Nazwa pliku obrazu wejściowego.
- Wczytanie obrazu wejściowego
image_name
przy użyciu funkcjiimread
i przekształcenie go na obraz w skali szarościLena
. - Przygotowanie fragmentu obrazu
y
poprzez wybranie określonego obszaru zLena
. - Zastosowanie funkcji
mm_atrous_lena
do obliczenia analizy multirezolucyjnej i otrzymania współczynników dekompozycji:a
,D1_MM
,D2_MM
,gprime
,hprime
orazcompressionRate
. - Dla każdego poziomu dekompozycji:
- Zastosowanie progowania twardego i miękkiego na macierzach
D1_MM
iD2_MM
przy użyciu funkcjiwthresh
. - Rekonstrukcja obrazu przy użyciu funkcji
atrous_up
.
- Zastosowanie progowania twardego i miękkiego na macierzach
- Inicjalizacja zmiennych i rozpoczęcie pętli
ConjGrad_2d
. - Wyliczenie współczynnika sygnału do szumu (SNR) na podstawie porównania oryginalnego obrazu
save_orig
i zrekonstruowanego obrazuf_image
. - Wyświetlenie obrazów oryginalnego i zrekonstruowanego oraz informacji o SNR i stopniu kompresji.
lvl = 3;
Threshold = [25, 25, 10];
image_name = 'obraz_wejsciowy.bmp';
recon_mm2(lvl, Threshold, image_name);
W powyższym przykładzie funkcja recon_mm2
zostanie wywołana z podanymi argumentami: lvl
ustawionym na 3, Threshold
ustawionym na wektor [25, 25, 10]
i image_name
ustawionym na 'obraz_wejsciowy.bmp'. Funkcja przeprowadzi rekonstrukcję obrazu i wyświetli wyniki.
Funkcja mm_atrous_lena
wykonuje dekompozycję falkową na obrazie Lena oraz oblicza moduł maksymalny. Zwraca również różne parametry i generuje wykresy dla analizy wyników.
[y, D1_MM, D2_MM, gprime, hprime, compressionRate] = mm_atrous_lena(decomp_times, Threshold, image_name)
decomp_times
: Liczba iteracji dekompozycji falkowej (poziom szczegółowości).Threshold
: Wartość progowa, która określa poziom odrzucenia nieznaczących współczynników falkowych.image_name
: Nazwa pliku obrazu, na którym ma być wykonana dekompozycja.
y
: Przetworzony obraz Lena po wycięciu fragmentu i wykonaniu dekompozycji.D1_MM
: Macierz detalów poziomych dla każdego poziomu dekompozycji.D2_MM
: Macierz detalów pionowych dla każdego poziomu dekompozycji.gprime
: Filtr horyzontalny falki.hprime
: Filtr wertykalny falki.compressionRate
: Stopień kompresji obrazu po zastosowaniu modułu maksymalnego.
- Wczytuje obraz Lena z pliku o podanej nazwie.
- Przetwarza obraz Lena przez wycięcie fragmentu o wymiarach (50:177, 50:177).
- Inicjalizuje zmienne i filtry falkowe.
- Wykonuje iteracyjną dekompozycję falkową na obrazie Lena.
- Oblicza detalne współczynniki (d1 i d2) na podstawie przesunięć i splotów z filtrami falkowymi.
- Oblicza moduł transformacji falkowej (wtm) oraz kąt wektora transformacji falkowej (alpha).
- Znajduje i zaznacza moduł maksymalny na podstawie kryteriów warunkowych.
- Buduje macierze detalów (d1_mm i d2_mm) zawierające tylko istotne współczynniki na podstawie modułu maksymalnego.
- Generuje wykresy dla analizy wyników, w tym przybliżenia, szczegóły, moduł transformacji i kąt wektora transformacji.
- Oblicza stopień kompresji obrazu na podstawie liczby zerowych współczynników modułu maksymalnego.
- Przybliżenia dla każdego poziomu dekompozycji.
- Szczegóły horyzontalne dla każdego poziomu dekompozycji.
- Szczegóły wertykalne dla każdego poziomu
dekompozycji. 4. Moduł transformacji falkowej dla każdego poziomu dekompozycji. 5. Kąt wektora transformacji falkowej dla każdego poziomu dekompozycji. 6. Moduł maksymalny dla każdego poziomu dekompozycji.
[y, D1_MM, D2_MM, gprime, hprime, compressionRate] = mm_atrous_lena(3, 0.5, 'lena.png');
W powyższym przykładzie zostanie wykonana dekompozycja falkowa obrazu 'lena.png' z użyciem 3 poziomów dekompozycji oraz wartości progowej 0.5. Wyniki zostaną zapisane do zmiennych y
, D1_MM
, D2_MM
, gprime
, hprime
, compressionRate
.