
10-LEKCIYA_MDQI_COLABTA
.pdf
10-Lekciya. Kórinis kontrastın sızıqlı beyimlesiw algoritmi
Jobası:
1.Kórinis kontrastın sızıqlı beyimlesiw algoritmi
2.Algoritmniń ámelge asırılıwı
3.Parametrlerdi tańlaw
4.Qollanılıw ornı
Kórinis kontrastın sızıqlı beyimlesiw algoritmi - súwrettiń sıpatın jaqsılaw ushın qollanılatuǵın áhmiyetli usıllardıń biri. Ol súwrettiń kontrastın asırıp, detalların anıǵıraq kórsetiwge járdem beredi.
2. Teoriyalıq tiykar
Sızıqlı kontrast beyimlesiwi - bul súwrettiń piksel qásiyetlerin ózgertiw arqalı kontrastın asıratuǵın process. Bul usıl hárbir pikseldiń intensivligin tómendegishe qayta esaplaydı:
jańa_intensivlik = a * dáslepki_intensivlik + b
Bunda:
a - kontrast koefficienti
b - jarıqlıq koefficienti
Bul formulada 'a' mánisi 1 den úlken bolsa, kontrast asadı, al 1 den kishi bolsa - kemeyedi.
3. Algoritmniń ámelge asırılıwı
Endi bul algoritmdi Python tilinde ámelge asırıwdı kórip shıǵayıq:
import cv2
import numpy as np
import matplotlib.pyplot as plt
def linear_contrast_adjustment(image, a, b):
#Súwretti float32 túrine aylandırıw adjusted = image.astype(float)
#Sızıqlı beyimlesiw formulasın qollanıw adjusted = a * adjusted + b
#Mánislerdi 0-255 aralıǵına sheklew adjusted = np.clip(adjusted, 0, 255)
#Súwretti qaytadan 8-bitli integer túrine aylandırıw return adjusted.astype('uint8')

# Súwretti oqıw
image = cv2.imread('mısal_súwret.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Sızıqlı kontrast beyimlesin qollanıw
adjusted_image = linear_contrast_adjustment(image, a=1.5, b=10)
# Nátiyjelerin kórsetiw
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6)) ax1.imshow(image)
ax1.set_title('Original Súwret') ax1.axis('off') ax2.imshow(adjusted_image)
ax2.set_title('Kontrasti beyimlengen súwret') ax2.axis('off')
plt.show()
Nátiyje:

Joqarıdaǵı programmaǵa táriyp:
1. Kerekli kitapxanalardı júklew:
import cv2 # OpenCV - súwretler menen islew ushın import numpy as np # Sanlar massivi menen islew ushın
import matplotlib.pyplot as plt # Grafikalardı kórsetiw ushın
2. Kontrast beyimlew funkciyası anıqlanǵan:
def linear_contrast_adjustment(image, a, b):
Bunda:
image - kirisiw súwreti
a - kontrasttıń masshtab koeffitsienti
b - jaqtılıq ushın qosılatuǵın mánisi
3. Súwretti qayta islewdiń basqıshları:
adjusted = image.astype(float) # Súwretti float túrine aylandırıw
adjusted = a * adjusted + b # Hár bir pikselge sızıqlı túrlendiriw qollanıw adjusted = np.clip(adjusted, 0, 255) # Mánislerdi 0-255 aralıǵına sheklew return adjusted.astype('uint8') # Nátiyje súwrettin formatın 8-bitke qaytarıw
4. Súwretti júklew hám tayarlaw:
image = cv2.imread('mısal_súwret.jpg') # Súwretti júklew
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # BGR formatınan RGB formatına aylandırıw
5. Kontrast beyimlewin qollanıw:
adjusted_image = linear_contrast_adjustment(image, a=1.5, b=10)
Bunda:
a=1.5 - kontrasttı 1.5 ese arttırıw
b=10 - jarıqlıqtı 10 birlikke arttırıw
6. Nátiyjelerin kórsetiw:
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6)) # 2 súwret ushın maydansha jaratıw
ax1.imshow(image) # Dáslepki súwretti kórsetiw ax1.set_title('Original Súwret') ax1.axis('off') # Kósherlerin jasırıw
ax2.imshow(adjusted_image) # Beyimlengen súwretti kórsetiw ax2.set_title('Kontrasti beyimlengen súwret') ax2.axis('off')
plt.show() # Nátiyjelerin ekranda kórsetiw

Bul kod dáslepki súwrettiń kontrastın arttırıw ushın sızıqlı túrlendiriw qollanadı. Nátiyje retinde dáslepki hám qayta islengen súwretler sáykes qarap salıstırıw ushın qatarma-qatar kórsetiledi.
Gistogram analizi
Súwrettiń kontrastın jaqsı túsiniw ushın gistogrammalardı paydalanıwımız múmkin:
def plot_histogram(image, title): plt.figure(figsize=(8, 6)) plt.title(title) plt.xlabel("Piksel intensivligi") plt.ylabel("Piksellar sanı")
plt.hist(image.ravel(), 256, [0, 256]) plt.show()
# Dáslepki súwret gistogramması
plot_histogram(image, "Dáslepki súwret gistogramması")
# Beyimlengen súwret gistogramması
plot_histogram(adjusted_image, "Beyimlengen súwret gistogramması")
Nátiyje:


1. Gistogrammanı kórsetiw funkciyasın anıqlaw:
def plot_histogram(image, title):
Bul funktsiya eki parametr aladı:
image - gistogramması salınatuǵın súwret
title - gistogramma ushın atama
2. Funkciya ishindegi ámellerdi túsindiremiz:
plt.figure(figsize=(8, 6)) # 8x6 ólshemli graf maydanın jaratıw plt.title(title) # Grafka atama qoyıw
plt.xlabel("Piksel intensivligi") # X kósherine at beriw plt.ylabel("Piksellar sanı") # Y kósherine at beriw
3. Gistogrammanı salıw:

plt.hist(image.ravel(), 256, [0, 256])
Bunda:
image.ravel() - súwret massivin bir ólshemli massivke aylandırıw
256 - baǵanalar sanı (0-255 piksel mánisleri ushın)
[0, 256] - gistogramma diapazonı
4. Gistogrammanı ekranda kórsetiw:
plt.show()
5.Funkciyanı qollanıw:
#Dáslepki súwret gistogramması
plot_histogram(image, "Dáslepki súwret gistogramması")
Bul qatarda dáslepki súwrettiń pikseller boyınsha bólistiriliwi kórsetiledi.
# Beyimlengen súwret gistogramması
plot_histogram(adjusted_image, "Beyimlengen súwret gistogramması")
Bul qatarda kontrastı beyimlengen súwrettiń pikseller boyınsha bólistiriliwi kórsetiledi.
Gistogramma - súwrettegi hár bir jaqtılıq dárejesiniń (0-255) qansha pikselde ushırasıwı haqqında maǵlıwmat beredi. Bul gistogrammalar arqalı kontrast beyimlewi súwrettiń pikseller bólistiriliwine qalay tásir etkenin kóriw múmkin:
Dáslepki súwret gistogramması - originaldaǵı pikseller bólistiriliwi
Beyimlengen súwret gistogramması - kontrasttı arttırıwdan keyingi pikseller bólistiriliwi
Avtomatik parametr tańlaw
Kóbinese, optimal 'a' hám 'b' mánislerin avtomatik túrde tabıw ushın gistogramma ekvalizaciyası qollanıladı:
def auto_contrast_adjustment(image):
# Gistogramma ekvalizaciyası
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) equalized = cv2.equalizeHist(gray)
#Dáslepki hám ekvalizaciyalanǵan súwretler arasındaǵı baylanıstı tabıw a, b = np.polyfit(gray.ravel(), equalized.ravel(), 1)
#Sızıqlı beyimlesiw
return linear_contrast_adjustment(image, a, b)
# Avtomatik beyimlesiw

auto_adjusted = auto_contrast_adjustment(image)
# Nátiyjelerin kórsetiw
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(18, 6)) ax1.imshow(image)
ax1.set_title('Original Súwret') ax1.axis('off') ax2.imshow(adjusted_image) ax2.set_title('Qolda beyimlengen súwret') ax2.axis('off')
ax3.imshow(auto_adjusted) ax3.set_title('Avtomatik beyimlengen súwret') ax3.axis('off')
plt.show()
Nátiyje:
Joqarıdaǵı kodqa táriyip:
1. Avtomatik kontrast beyimlew funktsiyasın anıqlaw:
def auto_contrast_adjustment(image):
2.Súwretti qayta islewdiń birinshi basqıshı:
#Súwretti sıya (gray) aylandırıw
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# Gistogramma ekvalizaciyasın qollanıw equalized = cv2.equalizeHist(gray)
Bunda:

Súwret dáslep sıya túske aylandırıladı
equalizeHist funkciyası pikseller bólistiriliwin teńlestiredi
3. Optimal kontrast parametrlerin tabıw:
a, b = np.polyfit(gray.ravel(), equalized.ravel(), 1)
Bunda:
polyfit funkciyası dáslepki hám ekvalizaciyalanǵan súwretler arasındaǵı
baylanıstı esaplaydı
a - kontrasttıń masshtab koefficienti
b - jarıqlıq ushın qosılatuǵın mánisi
4. Sızıqlı beyimlew funkciyasın shaqırıw:
return linear_contrast_adjustment(image, a, b)
5. Avtomatik beyimlew funkciyasın qollanıw:
auto_adjusted = auto_contrast_adjustment(image)
6. Barlıq nátiyjelerin kórsetiw:
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(18, 6)) # 3 súwret ushın maydansha jaratıw
#Dáslepki súwret ax1.imshow(image) ax1.set_title('Original Súwret') ax1.axis('off')
#Qolda beyimlengen súwret ax2.imshow(adjusted_image) ax2.set_title('Qolda beyimlengen súwret') ax2.axis('off')
#Avtomatik beyimlengen súwret ax3.imshow(auto_adjusted) ax3.set_title('Avtomatik beyimlengen súwret') ax3.axis('off')
plt.show() # Nátiyjelerin ekranda kórsetiw
Bul kod súwrettiń kontrastın avtomatik túrde beyimleydi:
1.Dáslep súwret sıya túske aylandırıladı
2.Gistogramma ekvalizaciyası arqalı optimal kontrastqa iye súwret alınadı
3.Dáslepki hám optimal súwret arasındaǵı baylanıs tiykarında kontrast parametrleri (a hám b) esaplanadı
4.Tabılǵan parametrler járdeminde sızıqlı kontrast beyimlew ámelge asırıladı
Nátiyje retinde úsh súwret kórsetiledi:
Dáslepki súwret
Qolda beyimlengen súwret (aldınǵı mısaldan)
Avtomatik beyimlengen súwret
BAQLAW SORAWLARÍ
1.Kontrast beyimlew funkciyasında a hám b parametrleri neni ańlatadı? Juwap: a - kontrasttıń masshtab koefficienti (súwrettiń kontrastın ózgertiw), b - jarıqlıq (jaqtılıq) ushın qosılatuǵın mánisi (súwrettiń ulıwma jarıqlıǵın ózgertiw).
2.Nege súwretti qayta islew waqtında float32 tipine aylandırıw kerek? Juwap: Matematikalıq esaplawlardı anıq orınlaw ushın hám maǵlıwmatlardıń joǵalıwın aldın alıw ushın.
3.Gistogramma neni kórsetedi hám ol ne ushın kerek?
Juwap: Gistogramma súwrettegi hár bir jarıqlıq dárejesiniń (0-255) qansha pikselde gezlesiwi haqqında maǵlıwmat beredi. Ol súwrettiń jarıqlıq bólistiriliwin analiz etiw ushın qollanıladı.
4.Gistogramma ekvalizaciyası ne ushın qollanıladı?
Juwap: Gistogramma ekvalizaciyası pikseller bólistiriliwin teńlestiriw arqalı súwrettiń kontrastın avtomatik túrde jaqsılaw ushın qollanıladı.
5.Nege avtomatik kontrast beyimlew funkciyasında súwret dáslep sıya túske (reńge) aylandırıladı?
Juwap: Sıya túsli súwret tek jarıqlıq maǵlıwmatın saqlap qalıp, esaplawlardı ápiwayı hám effektiv etedi.
6.np.clip() funktsiyası ne ushın qollanıladı?
Juwap: Piksel mánislerin 0-255 aralıǵına sheklew ushın, sebebi súwret pikselleriniń mánisi usı diapazonnan shıǵıp ketpewi kerek.
7.Avtomatik kontrast beyimlewde np.polyfit() funkciyası qanday wazıypanı atqaradı?
Juwap: Dáslepki hám ekvalizaciyalanǵan súwretler arasındaǵı optimal sızıqlı baylanıstı (a hám b koefficientlerin) tabadı.
8.Nege ravel() funkciyası qollanıladı?
Juwap: Kóp ólshemli súwret massivin bir ólshemli massivke aylandırıw ushın, bul gistogramma qurıw hám statistikalıq esaplawlar ushın kerek.
9.Kontrasttı qolda beyimlew hám avtomatik beyimlew usıllarınıń qanday ayırması bar?
Juwap: Qolda beyimlewde a hám b parametrleri qollanıwshı tárepinen beriledi, al avtomatik beyimlewde bul parametrler gistogramma ekvalizaciyası tiykarında esaplanadı.
10.Súwretti nege qaytadan 8-bitli (uint8) formatqa aylandırıw kerek? 11.Juwap: Kópshilik súwret formatları hám kórsetiw usılları 8-bitli piksel
formatın paydalanǵanlıqtan, nátiyje súwretti durıs saqlaw hám kórsetiw ushın qaytadan 8-bitli formatqa aylandırıw kerek.