Čištění obrázků je cenná technika, ať už pro další analýzu nebo jednoduše proto, aby vaše fotografie vypadaly co nejlépe.

Vylepšení obrazu je zásadním nástrojem pro počítačové vidění a aplikace pro úpravu obrázků. Jeho cílem je zlepšit kvalitu obrázků.

Zlepšením kvality obrazu lze výrazně zvýšit přesnost a spolehlivost analýzy obrazu a technik zpracování. To je zvláště důležité v aplikacích pro detekci, rozpoznávání, segmentaci a sledování objektů.

Vylepšení obrazu může pomoci, když kvalitu obrazu zhoršují faktory, jako jsou nízké světelné podmínky, šum snímače, rozmazání pohybu nebo chyby přenosu.

Nastavení vašeho prostředí

Začněte tím nastavení prostředí Pythona poté spusťte následující příkaz terminálu a nainstalujte knihovnu OpenCV. OpenCV použijete k načtení a zpracování úvodního obrázku a k uložení finálního vylepšeného obrázku.

pip install opencv-python

K zobrazení dvou obrázků použijete Matplotlib. Nainstalujte jej pomocí tohoto příkazu:

pip instalace matplotlib

Nakonec nainstalujte NumPy, což provedete

použití pro numerické operace včetně vytváření vyhledávacích tabulek pro gama korekci a definování jádra pro doostření obrazu:

pip install numpy

Jakmile tyto knihovny nainstalujete do svého prostředí, jste připraveni začít kódovat.

Úplný zdrojový kód pro toto demo je k dispozici v a úložiště GitHub.

Import nezbytných knihoven

Importujte knihovny, které jste dříve nainstalovali do svého prostředí:

import cv2
import matplotlib.pyplot tak jako plt
import nemotorný tak jako np

Všimněte si, že byste měli importovat OpenCV jako cv2. Jedná se o standardní postup, jehož cílem je zajistit kompatibilitu kódu a snadné porozumění pro ostatní vývojáře.

Načtení a zobrazení původního obrázku

Začněte načtením původního obrázku pomocí cv2.imread funkce. Toto je vstupní obrázek, na kterém váš program provede techniky vylepšení. Poté jej zobrazte pomocí příslušných funkcí Matplotlib:

obrázek = cv2.imread('example.jpg')
plt.imshow (cv2.cvtColor (obrázek, cv2.COLOR_BGR2RGB))
plt.title('Původní obrázek')
plt.show()

Zobrazení původního obrázku vám později pomůže porovnat výsledky programu:

Výše uvedený obrázek bude vstupem programu.

Snížení šumu v obraze

Odšumování je technika, jejímž cílem je snížit šum – náhodné zkreslení – v obrazu. Výsledkem je hladší výstup. OpenCV poskytuje rychléNlZnamená OdšumováníBarevné funkci pro tento účel. K odstranění šumu při zachování detailů obrazu používá nelokální algoritmus prostředků.

# Použijte vylepšení obrazu
# Zrušte šum obrazu
denoised_image = cv2.fastNlMeansDenoisingColored (obrázek, Žádný, 10, 10, 7, 21)

The rychléNlZnamená OdšumováníBarevné Funkce přebírá několik parametrů, včetně obrázku, síly filtru, velikosti okna šablony a velikosti okna vyhledávání. Chcete-li získat požadované výsledky, můžete experimentovat s různými hodnotami.

Roztažením kontrastu zlepšíte viditelnost detailů

Protažení kontrastu je také známé jako normalizace. Rozšiřuje hodnoty intenzity tak, aby pokryly určitý rozsah. To zase zlepšuje viditelnost detailů v obraze.

Na odšumovaný obrázek můžete použít roztažení kontrastu pomocí OpenCV normalizovat funkce:

# Proveďte kontrastní protahování
kontrastní_roztažený_image = cv2.normalize (odšumovaný_obrázek, Žádný, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Jak zaostřit obrázek

Doostření obrazu zvýrazňuje okraje a detaily obrazu, což pomáhá zlepšit ostrost obrazu.

# Zaostření obrazu
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
zaostřený_obrazek = cv2.filter2D(kontrastní_roztažený_obrázek, -1, kernel=kernel)

Výše uvedený kód vytváří matici jádra, která zdůrazňuje okraje a detaily v obrázku. The cv2.filter2D funkce aplikuje jádro na kontrastně roztažený obraz a ve výsledku jej zostřuje.

Nastavením jasu zlepšíte expozici

Nastavení jasu řídí celkový jas obrazu. Pomáhá to udělat obrázek vizuálně přitažlivým a dobře exponovaným.

# Nastavení jasu
bright_image = cv2.convertScaleAbs (zaostřený_image, alpha=1, beta=5)

The cv2.convertScaleAbs funkce upravuje jas obrazu. The alfa parametr řídí kontrast, zatímco beta parametr řídí jas. Zvýšení beta hodnota zvyšuje jas obrazu.

Použijte Gamma Correction pro rozjasnění obrazu

Po použití techniky úpravy jasu může být obraz příliš světlý. Gamma korekce upravuje celkový jas a kontrast obrazu. Opravuje obrázky, které se zdají příliš tmavé nebo příliš světlé.

# Gamma korekce
gama = 1.5
lookup_table = np.array([((i / 255.0) ** gama) * 255pro i v np.arange(0, 256)]).astype("uint8")
gama_corrected_image = cv2.LUT(obrázek_jasu, vyhledávací_tabulka)

Výše uvedený fragment kódu vytvoří vyhledávací tabulku, která aplikuje transformaci gama korekce na obraz s upraveným jasem. The gama hodnota řídí úpravu. Použijte hodnoty větší než 1 pro ztmavení obrazu a hodnoty menší než 1 pro zesvětlení.

Uložení a zobrazení konečného vylepšeného obrázku

Jakmile použijete výše uvedené techniky vylepšení, uložte konečný zpracovaný obrázek do souboru.

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

Poté zobrazte výstup programu pomocí Matplotlib.

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

Konečný vylepšený obrázek je následující:

Budoucnost vylepšování obrazu

Budoucnost vylepšování obrazu je v oblasti umělé inteligence. Algoritmy strojového učení se trénují, aby automaticky prováděly techniky vylepšení obrazu na snímcích.

Tyto programy zpracovávají každý obrázek nezávisle, takže pro různé obrázky používají různé hodnoty technik.