POC

Prompt

Jestem studentem przedmiotu Przetwarzanie Obrazów Cyfrowych. Robię laboratorium 1 "Filtry nieliniowe" w MATLAB-ie i mam już zrobione zadania 1, 2a, 2b i 2c dla obrazów SZARYCH. Napisz za mnie resztę sprawozdania: zadanie 3 (obrazy barwne) oraz sekcję wniosków. MOJA KONWENCJA KODOWA (musisz się jej ściśle trzymać, będę wklejał Twój kod bezpośrednio do jednego skryptu .m): 1. Skrypt zaczyna się od: clear; close all; clc; oraz sekcji "%% Konfiguracja" ze zmiennymi plikO1, plikO2 (ścieżki do JPG), wyc = 250:400 (pokazywany wycinek), okna = {[3 3], [5 5], [7 7]}. 2. Obrazy barwne wczytuję z imread() + uint8() + przycięcie do 512x512, szum nakładam imnoise(obr, 'salt & pepper', d) dla d = [0.01 0.02 0.10]. 3. Moje własne filtry NIE doklejają zer na brzegu — PRZYNASZĄ obraz: wynik ma rozmiar (H-m+1) x (W-n+1). Używam do tego pomocniczej funkcji zbierzOkna(X, m, n), która buduje macierz [(H-m+1)*(W-n+1) x m*n] bez żadnego paddingu — Twoje funkcje MUSZĄ z niej korzystać. 4. PSNR liczę WYŁĄCZNIE funkcją matlabową psnr(obraz, referencja), przy czym referencja musi być przycięta do tego samego obszaru co wynik filtra (np. dla okna 3x3: ref = O1(2:end-1,2:end-1)). Nie pisz własnej funkcji PSNR. 5. Wyniki trzymam w komórkach (cell arrays) w pętlach for, rysunki robię przez figure + subplot + imshow + title, a PSNR wstawiam do tytułów przez sprintf('... (PSNR=%.2f)', ...). NIE zapisuję nic automatycznie do plików (żadnych saveas/imwrite). 6. Wycinki na rysunkach pobieram z przesunięciem: dla okna m x m wycinek (wyc-(m-1)/2, wyc-(m-1)/2), żeby porównywać ten sam fragment sceny. 7. Kod ma zwięzłe komentarze POLSKIE bez polskich znaków (jak wyżej), styl sekcji: "%% Zad 3a", "%% Zad 3b", funkcje lokalne na końcu pliku. DO ZROBIENIA: a) Zad 3a: samodzielna implementacja mediany SKALARNEJ obrazu barwnego — każdy kanał R/G/B filtrowany osobno moim filtrem medianowym 3x3 (reuse filtrmedian z oknem [3 3] i ranga 'mediana'). Pokaż wyniki dla OBU obrazów barwnych i 3 poziomów szumu (1/2/10%), z PSNR w tytułach. b) Zad 3b: samodzielna implementacja wektorowego filtra medianowego VMF dla obu norm: L1 (suma wartosci bezwzglednych) i L2 (euklidesowa). Wymagania: JEDNA funkcja z parametrem normy ('L1'/'L2'), okno jako parametr, brzeg przycięty tak jak w moich innych filtrach, wektor wyjściowy = wektor z okna o najmniejszej zagregowanej odleglosci R_i = sum_j rho(F_i, F_j). Wyniki dla jednego obrazu, 3 poziomy szumu, PSNR w tytułach. c) Zad 3c: porownanie skutecznosci: obraz zaszumiony vs mediana skalarna vs VMF L1 vs VMF L2 vs VMF zastosowany 2x (drugie przejscie po VMF L1), dla szumow 1/2/10%. Rysunek w ukladzie 3x6 (kolumny: szum, mediana, VMF L1, VMF L2, 2xVMF; oryginal pokazany tylko w pierwszym wierszu), plus tabela PSNR wypisywana przez fprintf i gotowe wnioski. d) Sekcja "%% Wnioski": zbierz wnioski z CAŁEGO labu (zad 1-3) w punktach, uwzglednij: dlaczego filtry liniowe zawodza przy szumie impulsowym, kompromis rozmycie-detale (LUM vs mediana, wplyw parametru k), zachowanie mediany skalarnej na krawedziach barwnych (rozjazd kanalow R/G/B) i dlaczego VMF tego unika, roznice miedzy normami L1 i L2, po co drugie przejscie VMF. Na koncu dodaj krotszy fragment: weryfikacje poprawnosci polecenia imnoise dla obrazow barwnych (dodatkowy punkt na labie) — porownanie obrazu przed i po zaszumieniu piksel po pikselu: procent zmienionych kanalow vs procent pikseli z co najmniej jednym zmienionym kanalem, porownane z teoretyczna zaleznoscia 1-(1-d)^3, z komentarzem dlaczego roznica jest okolo 3x wieksza niz zadana gestosc.

Response not available

Drag to resize
Drag to resize

Response not available

Drag to resize
Drag to resize
Drag to resize