Zephyrnet Logosu

OpenCV Kullanarak Görüntü İşleme Başlarken

Tarih:

Giriş

Görüntü işleme, Bilgisayar görüşü dijital görüntüleri işlemek ve analiz etmek için çeşitli algoritmalar kullanır. Tıbbi ve uydu görüntüleri ve dijital fotoğrafçılık dahil ancak bunlarla sınırlı olmamak üzere birçok uygulama için görüntüleri değiştirmek üzere matematiksel veya istatistiksel işlemlerin kullanılmasını içerir. Bu makale, görüntü işlemenin temellerini ve bu alanda kullanılan bazı teknikleri incelemektedir.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

Görüntü İşlemenin Temelleri

Dijital görüntüler genellikle görüntünün o noktasındaki renk ve parlaklık değerlerini temsil eden küçük kutular olan piksellerden oluşur. Görüntü işleme, görüntü için gerekli olanı elde etmek için bu piksellerin istenen şekilde işlenmesini içerir. Dijital bir görüntü üzerinde gerçekleştirilen yaygın işlemlerin çoğu, filtreleme, geliştirme, geri yükleme vb.

Filtreleme, bir görüntüdeki istenmeyen gürültüyü ortadan kaldırma işlemidir. Görüntünün piksel değerlerini ayarlayan bir filtre uygulanarak yapılır. Filtre tipine bağlı olarak, çok çeşitli uygulamalar için kullanılabilirler. Gauss gürültüsü, tuz-biber gürültüsü veya benek gürültüsü gibi belirli gürültü türlerini ortadan kaldırmak için tasarlanabilirler. Yukarıda belirtilen gürültülerin giderilmesine yardımcı olan filtreler arasında medyan filtre, ortalama filtre ve Gauss filtresi bulunur.

Görüntü İşlemenin Temelleri

İyileştirme, bir görüntünün kalitesini artırabilecek bir işlemdir. Görüntünün parlaklığını veya kontrastını değiştirerek yapılır. Bu teknikler, bir histogram kullanarak parlaklığı ve kontrastı ayarlamak gibi basit veya bir görüntüdeki kenarları ve dokuları geliştirmek için algoritmalar kullanmak gibi daha karmaşık olabilir.

"

Kaynak: Mathworks.com

Restorasyon, bazı gürültülerin veya diğer yapıların bozabileceği bir görüntüyü kurtarma işlemidir. Teknikler, orijinal görüntüyü bozuk sürümden tahmin etmek için matematiksel yöntemlerin kullanılmasını içerir. Orijinal görüntüyü bulanık bir sürümden elde etmek için kullanılan ters evrişim veya bir görüntüdeki gürültüyü gidermek için kullanılan gürültü giderme gibi teknikler kullanılarak yapılır.

"

Kaynak: Mathworks.com

Görüntü ön işleme, görüntülerin kalitesini iyileştirmek ve böylece onları analiz ve sonraki işlemler için güçlendirmek için oldukça kullanışlıdır. Bazı güçlü görüntü ön işleme teknikleri arasında gürültü azaltma, kontrast geliştirme, görüntüyü yeniden boyutlandırma, renk düzeltme, segmentasyon, özellik çıkarma vb. Teknoloji ilerlemeye devam ettikçe, görüntü işleme muhtemelen günlük hayatımızda daha da önemli hale gelecektir.

Görüntü İşleme Uygulamaları

Görüntü ön işleme, görüntü verileriyle çalışırken hayati bir adımdır. En iyi sonuçlar, ilgili uygulamaya göre görüntülerin ön işlenmesi yapıldığında elde edilebilir. Aşağıda listelendiği gibi çeşitli alanlarda kullanılır:

  • Tıbbi görüntülerin kalitesini iyileştirerek hastalıkları veya anormallikleri tespit etmeyi kolaylaştıran Tıbbi Görüntüleme
  • Gözetleme videolarında yüzleri veya plakaları tanıma gibi görüntülerde Nesne Tanıma
  • Nesne Algılama, yani öncelikle sürücüsüz arabalarda yollarda daha iyi gezinmek ve kazalardan kaçınmak için kullanılır
  • Uydu görüntüleri, hava durumu tahmini, haritalama vb. için görüntü kalitesini artırmak için aynısını kullanır.

Görüntü Ön İşleme Teknikleri

Tekniklerin seçimi görüntünün ve uygulamanın doğasına bağlıdır. Görüntü kalitesini ve uygunluğunu iyileştirmek için birkaç teknik aşağıda verilmiştir:

  • gürültü Azaltma: Bir görüntüdeki parazit, düşük ışık, sensör gürültüsü ve sıkıştırma bozuklukları gibi çeşitli faktörlerden kaynaklanabilir. Gürültü azaltma teknikleri, temel özelliklerini korurken görüntüdeki gürültüyü gidermeyi amaçlar. Bazı yaygın gürültü azaltma teknikleri, Gauss yumuşatma, medyan filtreleme ve dalgacık gürültüsü gidermeyi içerir.
  • Kontrast Geliştirme: Kontrast geliştirme teknikleri, bir görüntünün kontrastını artırmayı ve farklı görüntü özelliklerini ayırt etmeyi kolaylaştırmayı amaçlar. Bu teknikler, tıbbi görüntüleme ve gözetim gibi uygulamalarda yardımcı olabilir. Bazı standart kontrast geliştirme teknikleri, histogram eşitleme, uyarlanabilir histogram eşitleme ve kontrast genişletmeyi içerir.
  • Görüntü Boyutlandırması: Bir görüntünün boyutunu ayarlamak için görüntü yeniden boyutlandırma teknikleri kullanılır. Yeniden boyutlandırma, bir görüntüyü küçültmek veya büyütmek veya en boy oranını değiştirmek için yapılabilir. Bazı tipik görüntü yeniden boyutlandırma teknikleri arasında en yakın komşu enterpolasyonu, çift doğrusal enterpolasyon ve bikübik enterpolasyon yer alır.
  • Renk Düzeltme: Bir görüntünün renk dengesini ayarlamak için renk düzeltme teknikleri kullanılır. Renk düzeltme, bir görüntünün renk doğruluğunun kritik olduğu fotoğrafçılık gibi uygulamalarda önemlidir. Bazı yaygın renk düzeltme teknikleri arasında gri dünya varsayımı, beyaz dengesi ve renk aktarımı bulunur.
  • Bölünme: Segmentasyon teknikleri, bir görüntüyü içeriğine göre bölgelere ayırmak için kullanılır. Segmentasyon, belirli yapıların veya organların görüntüden izole edilmesi gereken tıbbi görüntüleme gibi uygulamalarda yardımcı olabilir. Bazı standart segmentasyon teknikleri, eşikleme, kenar algılama ve bölge büyütmeyi içerir.
  • Özellik çıkarma: Özellik çıkarma teknikleri, bir görüntüden ilgili özellikleri tanımlamak ve çıkarmak için kullanılır. Bu özellikler nesne tanıma ve görüntü sınıflandırma uygulamalarında kullanılabilir. Bazı standart özellik çıkarma teknikleri, kenar algılama, köşe algılama ve doku analizini içerir.

Bazı Teknikleri Uygulamak

Gri tonlama, eşikleme, medyan ve gauss filtreleriyle gürültü azaltma, eşiklemeden önce ve sonra histogram görselleştirme ve örnek bir görüntüye uygulanan canny kenar algılamayı içeren birkaç görüntü işleme tekniğini burada bulabilirsiniz.

# Sample downloaded image
import cv2
import matplotlib.pyplot as plt pic1 = plt.imread('download.jpg')
plt.imshow(pic1)
Görüntü Ön İşleme Teknikleri

Kaynak: Dreamstime

#Converting the sample image to grayscale img = cv2.cvtColor(pic1, cv2.COLOR_BGR2GRAY)
plt.imshow(img,cmap='gray')
"

Eşik: İkili eşik çıktısı siyah ve beyaz olmak üzere yalnızca iki renk içerir. Eşikten büyük olan tüm değerleri beyaza ve bundan küçük olan tüm değerleri siyaha eşler.

#Thresholding: try playing with the threshold value (144 here) to see the changes ret, thresh1 = cv2.threshold(img, 140, 255, cv2.THRESH_BINARY)
plt.imshow(thresh1,cmap='gray')
"

gürültü Azaltma: Genellikle gürültünün niteliğine göre filtreleme ile yapılır. Burada, mevcut olabilecek gürültünün doğasını bilmediğimiz için medyan ve gauss filtreleri uygulamaya çalışıyoruz.

#Median filter img = cv2.cvtColor(pic1, cv2.COLOR_BGR2GRAY)
median = cv2.medianBlur(img,5)
plt.figure(figsize=(16, 16))
plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Noisy Image')
plt.subplot(122),
plt.imshow(median,cmap = 'gray')
plt.title('Median filter')
plt.show()
"
gaussian_blur1 = cv2.GaussianBlur(img,(5,5),2,cv2.BORDER_DEFAULT)
gaussian_blur2 = cv2.GaussianBlur(img,(5,5),7,cv2.BORDER_DEFAULT) plt.figure(figsize=(20, 20))
plt.subplot(1,3,1),plt.imshow(img,cmap = 'gray')
plt.title('Noisy Image') plt.subplot(1,3,2),
plt.imshow(gaussian_blur1,cmap = 'gray')
plt.title('smoothing with Gaussian sigma=2') plt.subplot(1,3,3),
plt.imshow(gaussian_blur2,cmap = 'gray')
plt.title('smoothing with Gaussian sigma=7')
Görüntü Ön İşleme Teknikleri

Otsu'nun Eşik Değeri: Burada, değerleri siyah beyaza eşlemek için eşik değeri belirtmiyoruz. Belirli bir görüntü için hangi eşiğin en iyi sonucu vereceğini tahmin etmek için bir histogram kullanır ve bu nedenle daha kullanışlıdır.

#Otsu's thresholding before and after Gaussian filtering
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
plt.imshow(th2,cmap='gray')
plt.imshow(th3,cmap='gray')
"
Görüntü Ön İşleme Teknikleri

Histogram, her görüntünün yoğunluk değerinin piksel sayısının görsel bir temsilidir. Orijinal ve filtrelenmiş görüntülere eşik uygulamadan önce ve sonra histogramlardaki değişiklikler aşağıda gösterilmiştir.

plt.figure(figsize=(16,16))
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
# Otsu's thresholding
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# Otsu's thresholding after Gaussian filtering
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# plot all the images and their histograms
images = [img, 0, th1, img, 0, th2, blur, 0, th3]
titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)', 'Original Noisy Image','Histogram',"Otsu's Thresholding", 'Gaussian filtered Image','Histogram',"Otsu's Thresholding"]
for i in range(3): plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray') plt.title(titles[i*3]), plt.xticks([]), plt.yticks([]) plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256) plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([]) plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray') plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([])
plt.show()
Görüntü Ön İşleme Teknikleri

Canny Edge Algılama: Temel olarak kenar algılama için kullanılır ve Sobel filtresi üzerine kuruludur. Kenarlar söz konusu olduğunda renk hızlı bir şekilde değiştiğinde gradyan maksimum olduğundan, esasen görüntünün her pikselindeki görüntü yoğunluğu gradyanını hesaplayarak çalışır.

#Hough Line Transform
dst = cv2.Canny(img, 50, 200, None, 3)
lines = cv2.HoughLines(dst, 1, np.pi / 180, 150, None, 0, 0)
# Draw the lines
if lines is not None: for i in range(0, len(lines)): rho = lines[i][0][0] theta = lines[i][0][1] a = math.cos(theta) b = math.sin(theta) x0 = a * rho y0 = b * rho pt1 = (int(x0 + 1000*(-b)), int(y0 + 1000*(a))) pt2 = (int(x0 - 1000*(-b)), int(y0 - 1000*(a))) cv2.line(cdst, pt1, pt2, (0,0,255), 3, cv2.LINE_AA)
cdst = cv2.cvtColor(dst, cv2.COLOR_GRAY2BGR)
plt.imshow(cdst)
"

Sonuç

Bu makale, görüntü işlemenin ilk birkaç adımında size yol gösterir. Görüntü işlemede kullanılan bazı uygulamaları özetlemektedir. Alanda kullanılan bazı teknikler ve uygulamaları hakkında bilgi sahibi olmanız amaçlanmaktadır. Makaleden birkaç çıkarım şunları içerir:

  • Görüntü işleme, görüntünün kalitesini yükseltmede önemli bir adımdır.
  • Geniş uygulama yelpazesi tıbbi, uydu, nesne algılama ve tanımayı içerir.
  • Filtreler, görüntüdeki gürültüyü gidermeye yardımcı olabilir
  • Bir görüntünün gradyanı, görüntüdeki kenarların algılanmasına yardımcı olur

Keşfet https://docs.opencv.org görüntü işleme için hayatınızı kolaylaştıracak daha güzel teknikler için.

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır. 

spot_img

En Son İstihbarat

spot_img