İster daha fazla analiz için ister sadece fotoğraflarınızın en iyi şekilde görünmesini sağlamak için olsun, görüntüleri temizlemek değerli bir tekniktir.

Görüntü geliştirme, bilgisayar görüşü ve görüntü düzenleme uygulamaları için çok önemli bir araçtır. Görüntülerin kalitesini artırmayı amaçlar.

Görüntü kalitesini artırarak, görüntü analizi ve işleme tekniklerinin doğruluğu ve güvenilirliği önemli ölçüde artırılabilir. Bu özellikle nesne algılama, tanıma, segmentasyon ve izleme uygulamalarında önemlidir.

Görüntü geliştirme, düşük ışık koşulları, sensör gürültüsü, hareket bulanıklığı veya iletim hataları gibi faktörlerin görüntü kalitesinden ödün verdiği durumlarda yardımcı olabilir.

Ortamınızı Kurma

La başlamak bir Python ortamı kurmak, ardından OpenCV kitaplığını yüklemek için aşağıdaki terminal komutunu çalıştırın. İlk görüntüyü yüklemek ve işlemek ve son geliştirilmiş görüntüyü kaydetmek için OpenCV kullanacaksınız.

pip kurulumu opencv-python

İki görüntüyü görüntülemek için Matplotlib'i kullanacaksınız. Bu komutu kullanarak kurun:

instagram viewer
pip yükleme matplotlib

Son olarak, kullanacağınız NumPy'yi kurun. sayısal işlemler için kullanın gama düzeltmesi için arama tabloları oluşturma ve görüntü keskinleştirme için çekirdeği tanımlama dahil:

pip kurulumu numpy

Bu kitaplıkları ortamınıza yükledikten sonra kodlamaya başlamaya hazırsınız.

Bu demo için tam kaynak kodu şu adreste mevcuttur: GitHub deposu.

Gerekli Kitaplıkları İçe Aktarma

Daha önce ortamınıza kurduğunuz kitaplıkları içe aktarın:

içe aktarmak CV2
içe aktarmak matplotlib.pyplot gibi pl
içe aktarmak dizi gibi np

OpenCV'yi şu şekilde içe aktarmanız gerektiğini unutmayın: CV2. Bu, diğer geliştiriciler için kod uyumluluğu ve kolay anlaşılırlık sağlamayı amaçlayan standart bir uygulamadır.

Orijinal Görüntüyü Yükleme ve Görüntüleme

kullanarak orijinal görüntüyü yükleyerek başlayın. cv2.imread işlev. Bu, programınızın geliştirme tekniklerini uygulayacağı girdi görüntüsüdür. Ardından, uygun Matplotlib işlevlerini kullanarak görüntüleyin:

resim = cv2.imread("örnek.jpg")
plt.imshow (cv2.cvtColor (resim, cv2.COLOR_BGR2RGB))
plt.title('Gerçek görüntü')
plt.show()

Orijinal görüntüyü görüntülemek, programın sonuçlarını daha sonra karşılaştırmanıza yardımcı olacaktır:

Yukarıdaki görüntü programın girdisi olacaktır.

Görüntüdeki Gürültüyü Azaltma

Gürültü giderme, görüntüdeki gürültüyü (rastgele bozulmaları) azaltmayı amaçlayan bir tekniktir. Bu, daha yumuşak bir çıktı sağlar. OpenCV şunları sağlar: fastNlMeans Gürültü AzaltmaRenkli bu amaç için işlev görür. Görüntü ayrıntılarını korurken gürültüyü gidermek için yerel olmayan bir araç algoritması kullanır.

# Görüntü geliştirmelerini uygulayın
# Görüntüyü gürültüden arındırın
denoised_image = cv2.fastNlMeansDenoisingColored (resim, Hiçbiri, 10, 10, 7, 21)

bu fastNlMeans Gürültü AzaltmaRenkli işlevi, görüntü, filtre gücü, şablon penceresi boyutu ve arama penceresi boyutu dahil olmak üzere birkaç parametre alır. İstediğiniz sonuçları elde etmek için farklı değerlerle denemeler yapabilirsiniz.

Ayrıntı Görünürlüğünü İyileştirmek için Kontrastı Uzat

Kontrast esnetme aynı zamanda normalleştirme olarak da bilinir. Belirli bir aralığa yayılmak için yoğunluk değerlerini uzatır. Bu da görüntüdeki ayrıntıların görünürlüğünü artırır.

OpenCV'leri kullanarak gürültüden arındırılmış görüntüye kontrast germe uygulayabilirsiniz. normalleştirmek işlev:

# Kontrast esnetme gerçekleştirin
kontrast_gerilmiş_image = cv2.normalize (denoised_image, Hiçbiri, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Görüntü Nasıl Keskinleştirilir

Görüntü keskinleştirme, görüntünün kenarlarını ve ayrıntılarını iyileştirerek görüntünün netliğini artırmaya yardımcı olur.

# Görüntü Keskinleştirme
çekirdek = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D(contrast_stretched_image, -1, çekirdek=çekirdek)

Yukarıdaki kod, görüntüdeki kenarları ve ayrıntıları vurgulayan bir çekirdek matrisi oluşturur. bu cv2.filter2D işlevi, çekirdeği kontrastla gerdirilmiş görüntüye uygulayarak sonucu keskinleştirir.

Pozlamayı İyileştirmek için Parlaklığı Ayarlayın

Parlaklık ayarı, bir görüntünün genel parlaklığını kontrol eder. Görüntünün görsel olarak çekici ve iyi pozlanmış olmasına yardımcı olur.

# Parlaklık Ayarı
parlaklık_image = cv2.convertScaleAbs (keskinleştirilmiş_görüntü, alfa=1, beta=5)

bu cv2.convertScaleAbs işlevi görüntünün parlaklığını ayarlar. bu alfa parametresi kontrastı kontrol ederken, beta parametre parlaklığı kontrol eder. artan beta değeri, görüntünün parlaklığını artırır.

Görüntüyü Parlaklaştırmak için Gama Düzeltmesi Uygulayın

Parlaklık ayarlama tekniğinden sonra bir görüntü çok parlak görünebilir. Gama düzeltme, bir görüntünün genel parlaklığını ve kontrastını ayarlar. Çok karanlık veya çok parlak görünen görüntüleri düzeltir.

# Gamma düzeltmesi
gama = 1.5
aranan_tablo = np.array([((i / 255.0) ** gama) * 255için Ben içinde np.turuncu(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(parlaklık_resmi, aranan_tablo)

Yukarıdaki kod parçacığı, parlaklık ayarlı görüntüye gama düzeltme dönüşümü uygulayan bir arama tablosu oluşturur. bu gama değeri ayarlamayı kontrol eder. Görüntüyü daha koyu yapmak için 1'den büyük değerler ve daha parlak yapmak için 1'den küçük değerler kullanın.

Nihai Geliştirilmiş Resmin Kaydedilmesi ve Görüntülenmesi

Yukarıdaki geliştirme tekniklerini uyguladıktan sonra, son işlenmiş görüntüyü bir dosyaya kaydedin.

# Son görüntüyü kaydet
cv2.imwrite("final_image.jpg", gamma_corrected_image)

Ardından Matplotlib kullanarak programın çıktısını görüntüleyin.

# Son geliştirilmiş görüntüyü göster
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title("Nihai Geliştirilmiş Görüntü")
plt.show()

Nihai geliştirilmiş görüntü aşağıdaki gibidir:

Görüntü İyileştirmenin Geleceği

Görüntü iyileştirmenin geleceği yapay zeka alanındadır. Makine öğrenimi algoritmaları, görüntüler üzerinde görüntü geliştirme tekniklerini otomatik olarak gerçekleştirmek için eğitiliyor.

Bu programlar her görüntüyü bağımsız olarak ele alır, bu nedenle farklı görüntüler için tekniklerin farklı değerlerini uygularlar.