Attēlu tīrīšana ir vērtīgs paņēmiens gan turpmākai analīzei, gan vienkārši tam, lai fotoattēli izskatītos pēc iespējas labāk.
Attēlu uzlabošana ir būtisks rīks datora redzes un attēlu rediģēšanas lietojumprogrammām. Tā mērķis ir uzlabot attēlu kvalitāti.
Uzlabojot attēla kvalitāti, var ievērojami uzlabot attēlu analīzes un apstrādes metožu precizitāti un uzticamību. Tas ir īpaši svarīgi objektu noteikšanas, atpazīšanas, segmentācijas un izsekošanas lietojumprogrammās.
Attēla uzlabošana var palīdzēt, ja tādi faktori kā vāja apgaismojuma apstākļi, sensora trokšņi, kustības izplūšana vai pārraides kļūdas ir pasliktinājuši attēla kvalitāti.
Jūsu vides iestatīšana
Sāciet ar Python vides iestatīšana, pēc tam palaidiet šo termināļa komandu, lai instalētu OpenCV bibliotēku. Jūs izmantosiet OpenCV, lai ielādētu un apstrādātu sākotnējo attēlu un saglabātu galīgo uzlaboto attēlu.
pip instalēt opencv-python
Lai parādītu divus attēlus, izmantosit Matplotlib. Instalējiet to, izmantojot šo komandu:
pip instalēt matplotlib
Visbeidzot, instalējiet NumPy, ko jūs darīsit izmantot skaitliskām operācijām ieskaitot uzmeklēšanas tabulu izveidi gamma korekcijai un kodola definēšanu attēla asināšanai:
pip install numpy
Kad esat instalējis šīs bibliotēkas savā vidē, esat gatavs sākt kodēšanu.
Pilns šīs demonstrācijas pirmkods ir pieejams a GitHub repozitorijs.
Nepieciešamo bibliotēku importēšana
Importējiet bibliotēkas, kuras iepriekš instalējāt savā vidē:
imports cv2
imports matplotlib.pyplot kā plt
imports nejutīgs kā np
Ņemiet vērā, ka jums vajadzētu importēt OpenCV kā cv2. Šī ir standarta prakse, kuras mērķis ir nodrošināt koda saderību un vieglāku izpratni citiem izstrādātājiem.
Sākotnējā attēla ielāde un parādīšana
Sāciet ar oriģinālā attēla ielādi, izmantojot cv2.imread funkciju. Šis ir ievades attēls, kurā jūsu programma veiks uzlabošanas metodes. Pēc tam parādiet to, izmantojot atbilstošās Matplotlib funkcijas:
attēls = cv2.imread("example.jpg")
plt.imshow (cv2.cvtColor (attēls, cv2.COLOR_BGR2RGB))
plt.title("Oriģinālais attēls")
plt.show()
Sākotnējā attēla parādīšana palīdzēs vēlāk salīdzināt programmas rezultātus:
Iepriekš redzamais attēls būs programmas ievade.
Trokšņa samazināšana attēlā
Trokšņa samazināšana ir metode, kuras mērķis ir samazināt attēla troksni — nejaušus kropļojumus. Tas nodrošina vienmērīgāku izvadi. OpenCV nodrošina fastNlMeansDenoisingColored funkcija šim nolūkam. Tas izmanto nelokālu līdzekļu algoritmu, lai noņemtu troksni, vienlaikus saglabājot attēla detaļas.
# Lietojiet attēla uzlabojumus
# Atbrīvojiet attēlu
denoised_image = cv2.fastNlMeansDenoisingColored (attēls, Nav, 10, 10, 7, 21)
The fastNlMeansDenoisingColored funkcijai ir nepieciešami vairāki parametri, tostarp attēls, filtra stiprums, veidnes loga izmērs un meklēšanas loga izmērs. Varat eksperimentēt ar dažādām vērtībām, lai iegūtu vēlamos rezultātus.
Izstiepiet kontrastu, lai uzlabotu detaļu redzamību
Kontrasta stiepšana ir pazīstama arī kā normalizācija. Tas izstiepj intensitātes vērtības, lai aptvertu noteiktu diapazonu. Tas savukārt uzlabo attēla detaļu redzamību.
Izmantojot OpenCV, varat izmantot kontrasta izstiepšanu attēlam, kurā nav trokšņu normalizēt funkcija:
# Veiciet kontrasta stiepšanu
kontrasts_izstiepts_attēls = cv2.normalize (denoised_image, Nav, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)
Kā asināt attēlu
Attēla asināšana uzlabo attēla malas un detaļas, palīdzot uzlabot attēla izteiksmīgumu.
# Attēla asināšana
kodols = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
asināts_attēls = cv2.filter2D(kontrasts_izstiepts_attēls, -1, kodols = kodols)
Iepriekš minētais kods izveido kodola matricu, kas izceļ attēla malas un detaļas. The cv2.filter2D funkcija piemēro kodolu kontrasta izstieptajam attēlam, rezultātā padarot to asāku.
Pielāgojiet spilgtumu, lai uzlabotu ekspozīciju
Spilgtuma regulēšana kontrolē attēla kopējo spilgtumu. Tas palīdz padarīt attēlu vizuāli pievilcīgu un labi eksponētu.
# Spilgtuma regulēšana
brightness_image = cv2.convertScaleAbs (asināts_attēls, alfa=1, beta=5)
The cv2.convertScaleAbs funkcija regulē attēla spilgtumu. The alfa parametrs kontrolē kontrastu, savukārt beta parametrs kontrolē spilgtumu. Palielinot beta vērtība uzlabo attēla spilgtumu.
Izmantojiet gamma korekciju, lai padarītu attēlu gaišāku
Pēc spilgtuma regulēšanas tehnikas attēls var izskatīties pārāk spilgts. Gamma korekcija pielāgo attēla kopējo spilgtumu un kontrastu. Tas izlabo attēlus, kas šķiet pārāk tumši vai pārāk spilgti.
# Gamma korekcija
gamma = 1.5
lookup_table = np.masīvs([((i / 255.0) ** gamma) * 255priekš i iekšā np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(spilgtuma_attēls, uzmeklēšanas_tabula)
Iepriekš minētais koda fragments izveido uzmeklēšanas tabulu, kas piemēro gamma korekcijas transformāciju attēlam, kuram ir pielāgots spilgtums. The gamma vērtība kontrolē korekciju. Izmantojiet vērtības, kas lielākas par 1, lai padarītu attēlu tumšāku, un vērtības, kas ir mazākas par 1, lai padarītu to gaišāku.
Pēdējā uzlabotā attēla saglabāšana un parādīšana
Kad esat lietojis iepriekš minētās uzlabošanas metodes, saglabājiet galīgo apstrādāto attēlu failā.
# Saglabājiet galīgo attēlu
cv2.imwrite('final_image.jpg', gamma_corrected_image)
Pēc tam parādiet programmas izvadi, izmantojot Matplotlib.
# Parādiet galīgo uzlaboto attēlu
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title("Pēdējais uzlabotais attēls")
plt.show()
Galīgais uzlabotais attēls ir šāds:
Attēlu uzlabošanas nākotne
Attēla uzlabošanas nākotne ir mākslīgā intelekta jomā. Mašīnmācīšanās algoritmi tiek apmācīti, lai attēliem automātiski veiktu attēla uzlabošanas paņēmienus.
Šīs programmas katru attēlu apstrādā neatkarīgi, tāpēc dažādiem attēliem izmanto dažādas metožu vērtības.