Čistenie obrázkov je cenná technika, či už ide o ďalšiu analýzu alebo jednoducho o to, aby vaše fotografie vyzerali čo najlepšie.

Vylepšenie obrazu je kľúčovým nástrojom pre počítačové videnie a aplikácie na úpravu obrázkov. Jeho cieľom je zlepšiť kvalitu obrázkov.

Zlepšením kvality obrazu možno výrazne zvýšiť presnosť a spoľahlivosť analýzy obrazu a techník spracovania. Toto je obzvlášť dôležité v aplikáciách detekcie, rozpoznávania, segmentácie a sledovania objektov.

Vylepšenie obrazu môže pomôcť, keď kvalitu obrazu zhoršujú faktory ako slabé svetelné podmienky, šum snímača, rozmazanie pohybu alebo chyby prenosu.

Nastavenie vášho prostredia

Začnite tým nastavenie prostredia Python, potom spustite nasledujúci príkaz terminálu na inštaláciu knižnice OpenCV. OpenCV použijete na načítanie a spracovanie úvodného obrázka a na uloženie konečného vylepšeného obrázka.

pip nainštalovať opencv-python

Na zobrazenie dvoch obrázkov použijete Matplotlib. Nainštalujte ho pomocou tohto príkazu:

pip nainštalovať matplotlib
instagram viewer

Nakoniec nainštalujte NumPy, ktorý budete mať použiť na numerické operácie vrátane vytvárania vyhľadávacích tabuliek pre gama korekciu a definovania jadra pre ostrenie obrazu:

pip install numpy

Po nainštalovaní týchto knižníc do vášho prostredia ste pripravení začať s kódovaním.

Úplný zdrojový kód pre toto demo je dostupný v a úložisko GitHub.

Import potrebných knižníc

Importujte knižnice, ktoré ste predtým nainštalovali vo svojom prostredí:

importovať cv2
importovať matplotlib.pyplot ako plt
importovať numpy ako np

Všimnite si, že by ste mali importovať OpenCV ako cv2. Ide o štandardný postup, ktorého cieľom je zabezpečiť kompatibilitu kódu a jednoduchosť pochopenia pre ostatných vývojárov.

Načítanie a zobrazenie pôvodného obrázka

Začnite načítaním pôvodného obrázka pomocou cv2.imread funkciu. Toto je vstupný obrázok, na ktorom váš program vykoná techniky vylepšenia. Potom ho zobrazte pomocou príslušných funkcií Matplotlib:

obrázok = cv2.imread('example.jpg')
plt.imshow (cv2.cvtColor (obrázok, cv2.COLOR_BGR2RGB))
plt.title('Pôvodný obrázok')
plt.show()

Zobrazenie pôvodného obrázka vám neskôr pomôže porovnať výsledky programu:

Vyššie uvedený obrázok bude vstupom programu.

Zníženie šumu v obraze

Odstránenie šumu je technika, ktorej cieľom je znížiť šum – náhodné skreslenie – v obraze. Výsledkom je plynulejší výstup. OpenCV poskytuje rýchlyNlProstriedkyOdšumovanieFarebné funkciu na tento účel. Používa nelokálny algoritmus prostriedkov na odstránenie šumu pri zachovaní detailov obrazu.

# Použite vylepšenia obrazu
# Zrušte šum obrazu
denoised_image = cv2.fastNlMeansDenoisingColored (obrázok, žiadne, 10, 10, 7, 21)

The rýchlyNlProstriedkyOdšumovanieFarebné funkcia preberá niekoľko parametrov vrátane obrázka, sily filtra, veľkosti okna šablóny a veľkosti okna vyhľadávania. Môžete experimentovať s rôznymi hodnotami, aby ste dosiahli požadované výsledky.

Roztiahnutím kontrastu zlepšíte viditeľnosť detailov

Kontrastné rozťahovanie je tiež známe ako normalizácia. Roztiahne hodnoty intenzity tak, aby prekročili určitý rozsah. To zase zlepšuje viditeľnosť detailov v obraze.

Na odšumený obrázok môžete použiť roztiahnutie kontrastu pomocou OpenCV normalizovať funkcia:

# Vykonajte kontrastný strečing
kontrastný_obrázok = cv2.normalize (odšumovaný_obrázok, žiadne, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Ako zaostriť obrázok

Doostrenie obrazu zvýrazňuje okraje a detaily obrazu, čím pomáha zlepšiť ostrosť obrazu.

# Zaostrenie obrazu
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
zaostrený_obrázok = cv2.filter2D(kontrastný_roztiahnutý_obrázok, -1, kernel=kernel)

Vyššie uvedený kód vytvára maticu jadra, ktorá zdôrazňuje okraje a detaily v obrázku. The cv2.filter2D funkcia aplikuje jadro na kontrastne roztiahnutý obrázok, čím ho zostrí.

Upravte jas na zlepšenie expozície

Úprava jasu ovláda celkový jas obrazu. Pomáha to urobiť obrázok vizuálne príťažlivým a dobre exponovaným.

# Nastavenie jasu
bright_image = cv2.convertScaleAbs (zaostrený_obrázok, alpha=1, beta=5)

The cv2.convertScaleAbs funkcia upravuje jas obrazu. The alfa parameter ovláda kontrast, zatiaľ čo beta parameter ovláda jas. Zvýšenie beta hodnota zvyšuje jas obrazu.

Na rozjasnenie obrázka použite korekciu gama

Po použití techniky úpravy jasu môže byť obraz príliš svetlý. Gamma korekcia upravuje celkový jas a kontrast obrazu. Opravuje obrázky, ktoré sú príliš tmavé alebo príliš svetlé.

# Gamma korekcia
gama = 1.5
lookup_table = np.array([((i / 255.0) ** gama) * 255pre i v np.arange(0, 256)]).astype("uint8")
gama_corrected_image = cv2.LUT(obrázok_jasu, vyhľadávacia_tabuľka)

Vyššie uvedený útržok kódu vytvorí vyhľadávaciu tabuľku, ktorá aplikuje transformáciu gama korekcie na obrázok s upraveným jasom. The gama hodnota ovláda nastavenie. Hodnoty väčšie ako 1 použite na stmavenie obrázka a hodnoty menšie ako 1 na zosvetlenie.

Uloženie a zobrazenie finálnej vylepšenej snímky

Po použití vyššie uvedených techník vylepšenia uložte konečný spracovaný obrázok do súboru.

# Uložte konečný obrázok
cv2.imwrite('final_image.jpg', gama_corrected_image)

Potom zobrazte výstup programu pomocou Matplotlib.

# Zobrazte konečný vylepšený obrázok
plt.imshow (cv2.cvtColor (gama_corrected_image, cv2.COLOR_BGR2RGB))
plt.title(„Konečný vylepšený obrázok“)
plt.show()

Konečný vylepšený obrázok je nasledovný:

Budúcnosť vylepšenia obrazu

Budúcnosť vylepšovania obrazu je v oblasti umelej inteligencie. Algoritmy strojového učenia sa trénujú tak, aby automaticky vykonávali techniky vylepšenia obrazu na obrázkoch.

Tieto programy spracovávajú každý obrázok nezávisle, takže pre rôzne obrázky používajú rôzne hodnoty techník.