18 Kasım 2018 Pazar

Görüntü İşleme (Image Processing)

Görüntü işleme dersinde işlenen ders içeriği, verilen ödevler ve yapılan quizler hakkında uygulamalı örnekler.
Github : https://github.com/bboz/Image_Processing

1.Hafta - RGB Resimi matplotlib kütüphanesi sayesinde ekranda gösterme ve renk değerlerine bakma

2.Hafta - RGB Resim üzerinden renk değerlerine göre ortalama, medyan, çeyreklik gibi değerleri bulma, resmin tersini(inverse) alma renk değerlerini histogramda gösterme.

3.Hafta - RGB Resimi gray level seviyesine ve black white seviyesine indirgeme işlemi.

4.Hafta - RGB Resimi black white resime dönüştürüp resim üzerine mask işlemi uygulamak.

5.Hafta - Black white resim üzerinden nesne sayısı bulmak.

6.Hafta - BW Resiminin veya 0 ve 1 ler ile oluşturulmuş bir matrisin MBR(minimum bounding rectangle) değerlerinin bulunması ve resimlerin benzerlik oranlarının bulunması

7.Hafta (Ödev) - BW Resime eresion ve dilation işlemlerinin uygulanması.

10.Hafta - Iris veri seti ile kmeans algoritmasını inceleme.







1.Hafta Ders İçeriği

     import matplotlib.pyplot as plt
     #import matplotlib.image as mpimg
     #img_mpimg.imread('test1.jpg')
     #%matplotlib inline
     import numpy as np

     im_1=plt.imread("1.jpg")

     plt.imshow(im_1)
     plt.show()

     def fonk1(image_1):
      print("Resmin boyutu = ",image_1.ndim,"\n") 
      print("Resmin Shape değeri = ",image_1.shape,"\n")
      print("Red için min değer = ",image_1[:,:,0].min(),"\n")
      #':' hangi yerde kullanıldıysa oranın tamamından bahsediyor örneğin burada tüm satırlar ve sütünlar
      print("Red için max değer = ",image_1[:,:,0].max(),"\n")
      # şuan kırmızı için olan değerlere bakıyoruz 1 olsa yeşil 2 olursa mavi
      
     fonk1(im_1)

     im_1[:,:,0]=im_1[:,:,0]+50

     plt.imshow(im_1)
     plt.show()

     def my_function_1(my_img):
      
      print("eksen sayisi : ",my_img.ndim)
      print("eksen degerleri :",my_img.shape)
      
      print("en kucuk kirmizi renk degeri : ",np.min(my_img[:,:,0]))
      print("en kucuk kirmizi renk degeri : ",np.max(my_img[:,:,0]))
      
      print("en kucuk yesil renk degeri : ",np.min(my_img[:,:,1]))
      print("en kucuk yesil renk degeri : ",np.max(my_img[:,:,1]))
      
      print("en kucuk mavi renk degeri : ",np.min(my_img[:,:,2]))
      print("en kucuk mavi renk degeri : ",np.max(my_img[:,:,2]))
      
     my_function_1(im_1)


2.Hafta Ders İçeriği

     import os
     cwd = os.getcwd()
     cwd
     os.chdir("C:\\imageProcessing2018")
     import matplotlib.pyplot as plt
     import numpy as np
     im_1=plt.imread("1.jpg")
     plt.imshow(im_1)
     plt.show()
     from scipy import stats
     from scipy.stats import iqr
     from scipy.stats import skew
     #mean=sum(img)/len(img)
     #plt.subplot(1,2,2),plt.imshow(255-img)
     im_1.setflags(write=1)
     # resim sadece read-only özelliğine sahipti üzerinde değişiklik yapabilmek için değiştirdim
     im_1.flags


     im_1[:,:,0]=im_1[:,:,0]+150  
     # resim üzerinde kırmızı tonu için renk değişimi
     plt.imshow(im_1)
     plt.show()


     def my_function(x):
      return 255-x

     def inverse(image):
      image[:,:,0]=my_function(image[:,:,0])
      image[:,:,1]=my_function(image[:,:,1])
      image[:,:,2]=my_function(image[:,:,2])
      
     def mean(image):
      print("Kirmizi icin renk ortalamasi : ",np.mean(image[:,:,0]))
      print("Yesil icin renk ortalamasi : ",np.mean(image[:,:,1]))
      print("Mavi icin renk ortalamasi : ",np.mean(image[:,:,2]))
      
     def median(image):
      print("Kirmizi icin renk ortanca degeri : ",np.median(image[:,:,0]))
      print("Yesil icin renk ortanca degeri : ",np.median(image[:,:,1]))
      print("Mavi icin renk ortanca degeri : ",np.median(image[:,:,2]))
      
     def mode(image):
      print("Kirmizi icin renk modu : ",stats.mode(image[:,:,0]))
      print("Yesil icin renk modu : ",stats.mode(image[:,:,1]))
      print("Mavi icin renk modu : ",stats.mode(image[:,:,2]))
      
      
     def my_H(image):
      H={}
      for i in range (image.shape[0]):
       for j in range (image.shape[1]):
        if(image[i,j,0] in H.keys()):
         H[image[i,j,0]]=H[image[i,j,0]]+1
        else:
         H[image[i,j,0]]=1
        if(image[i,j,1] in H.keys()):
         H[image[i,j,1]]=H[image[i,j,1]]+1
        else:
         H[image[i,j,1]]=1
        if(image[i,j,2] in H.keys()):
         H[image[i,j,2]]=H[image[i,j,2]]+1
        else:
         H[image[i,j,2]]=1
      plt.bar(list(H.keys()),list( H.values()), color='r')
      plt.show()
        
         
     def ceyreklik(image):
      print("Kirmizi icin Q1 degeri = ",np.percentile(image[:,:,0],25))
      print("Kirmizi icin Q2 degeri = ",np.percentile(image[:,:,0],50))
      print("Kirmizi icin Q3 degeri = ",np.percentile(image[:,:,0],75))
      print("Yesil icin Q1 degeri = ",np.percentile(image[:,:,1],25))
      print("Yesil icin Q2 degeri = ",np.percentile(image[:,:,1],50))
      print("Yesil icin Q3 degeri = ",np.percentile(image[:,:,1],75))
      print("Mavi icin Q1 degeri = ",np.percentile(image[:,:,2],25))
      print("Mavi icin Q2 degeri = ",np.percentile(image[:,:,2],50))
      print("Mavi icin Q3 degeri = ",np.percentile(image[:,:,2],75))
      print("Kirmizi icin iqr degeri = ",iqr(image[:,:,0]))
      print("Yesil icin iqr degeri = ",iqr(image[:,:,1]))
      print("Mavi icin iqr degeri = ",iqr(image[:,:,2]))
      
     def ss(image):
      print("Kirmizi icin skewness degeri = ",skew(image[:,:,0]))
      print("Yesil icin skewness degeri = ",skew(image[:,:,1]))
      print("Mavi icin skewness degeri = ",skew(image[:,:,2]))
      
     def aralik(image):
      print("Kirmizi icin range araligi = ",image[:,:,0].max()-image[:,:,0].min())
      print("Yesil icin range araligi = ",image[:,:,0].max()-image[:,:,1].min())
      print("Mavi icin range araligi = ",image[:,:,0].max()-image[:,:,2].min())
      

     inverse(im_1)
     mean(im_1)
     median(im_1)
     mode(im_1)
     plt.imshow(im_1)
     plt.show()
     my_H(im_1)
     ceyreklik(im_1)
     ss(im_1)
     aralik(im_1)


3.Hafta Ders İçeriği

     #!/usr/bin/env python
     # coding: utf-8
     import numpy as np
     import os
     cwd = os.getcwd()
     cwd
     os.chdir("C:\\imageProcessing2018")
     import matplotlib.pyplot as plt
     import numpy as np
     im1=plt.imread("1.jpg")
     plt.imshow(im1)
     plt.show()
     im1.setflags(write=1) 
     # resim sadece read-only özelliğine sahipti üzerinde değişiklik yapabilmek için değiştirdim
     get_ipython().run_line_magic('matplotlib', 'inline')

     def get_distance(v,w=[1/3,1/3,1/3]):   #w ağırlık değeri
      a,b,c=v[0],v[1],v[2]
      w1,w2,w3=w[0],w[1],w[2]
      #d=((a*w1)**2+(b*w2)**2+(c*w3)**2)**.5 #sqrt işlemi var
      d=((a**2)*w1+(b**2)*w2+(c**2)*w3)**.5
      return d

     my_RGB=[1,2,3]
     gray_level=get_distance(my_RGB)
     print(gray_level)

     my_RGB=[10,20,3]
     gray_level=get_distance(my_RGB,[.6,.3,.1])
     print(gray_level)

     def convert_rgb_to_gray_level(im_1):
      m=im_1.shape[0]
      n=im_1.shape[1]
      im_2=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        im_2[i,j]=get_distance(im_1[i,j,:])
      return im_2

     im2=convert_rgb_to_gray_level(im1)
     type(im2)
     im1.shape,im2.shape


     plt.imshow(im2,cmap='gray')
     plt.show()


     def convert_gray_to_BW(image_gray_level):
      m=image_gray_level.shape[0]
      n=image_gray_level.shape[1]
      im_bw=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        if image_gray_level[i,j]>120:
         im_bw[i,j]=1
        else:
         im_bw[i,j]=0
      return im_bw

     im3=convert_gray_to_BW(im2)

     plt.subplot(1,3,1),plt.imshow(im1)
     plt.subplot(1,3,2),plt.imshow(im2,cmap='gray')
     plt.subplot(1,3,3),plt.imshow(im3,cmap='gray')

     plt.imshow(im3,cmap='gray')
     plt.show()


RGB
Gray

BW



4.Hafta Ders İçeriği

     
     # coding: utf-8
     import numpy as np 
     #resim üzerinden bir parça alıp onu mask ile çarpabilir toplayabilir herhangibir işleme tabi tutabiliriz.
     import matplotlib.pyplot as plt
     mask_0=np.array([1,1,1,1,1,1,1,1,1]).reshape(3,3)
     mask_0=(mask_0)/9
     mask_1=np.random.randint(5,size=9).reshape(3,3)
     mask_2=np.random.randint(5,size=9).reshape(3,3)
     print(mask_1)
     print("------------")
     print(mask_2)
     print("------------")
     print(mask_1*mask_2)
     print("------------")
     print(mask_1*mask_0)

     def get_distance(v,w=[1/3,1/3,1/3]):   #w ağırlık değeri
      a,b,c=v[0],v[1],v[2]
      w1,w2,w3=w[0],w[1],w[2]
      #d=((a*w1)**2+(b*w2)**2+(c*w3)**2)**.5 #sqrt işlemi var
      d=((a**2)*w1+(b**2)*w2+(c**2)*w3)**.5
      return d

     def convert_rgb_to_gray_level(im_1):
      m=im_1.shape[0]
      n=im_1.shape[1]
      im_2=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        im_2[i,j]=get_distance(im_1[i,j,:])
      return im_2

     sum(sum(mask_1*mask_0))

     def get_default_mask_for_mean():
      return np.array([1,1,1,1,1,1,1,1,1]).reshape(3,3)/9
     def apply_mask(part_of_image):
      mask=get_default_mask_for_mean()
      return np.average(part_of_image)

     im1=plt.imread("1.jpg")       #ortalama ile yapılan örnek
     im1=convert_rgb_to_gray_level(im1)
     plt.imshow(im1,cmap='gray')
     plt.show()
     m=im1.shape[0]
     n=im1.shape[1]
     im2=np.zeros((m,n))
     for i in range(1,m):
      for j in range(1,n):
       poi=im1[i-1:i+2,j-1:j+2]
       im2[i,j]=apply_mask(poi)    #part of image = poi

     plt.imshow(im2,cmap='gray')
     plt.show()

     mask_1=np.random.randint(5,size=9).reshape(3,3)
     mask_1

     mask_1[:,0:1]

     im2[3:6,10:13]

     s_1=im2[3:6,10:13].reshape(9)

     s_1.sort()
     s_1[5]

     def get_median(poi):
      s_1=poi.reshape(1,9)
      s_1.sort()
      return s_1[0,4]

     im1=plt.imread("1.jpg")   # ortanca ile yapılan örnek
     im1=convert_rgb_to_gray_level(im1)
     plt.imshow(im1,cmap='gray')
     plt.show()
     m=im1.shape[0]
     n=im1.shape[1]
     im2=np.zeros((m,n))
     for i in range(1,m-1):
      for j in range(1,n-1):
       poi=im1[i-1:i+2,j-1:j+2]
       im2[i,j]=get_median(poi)    #part of image = poi

     plt.imshow(im2,cmap='gray')
     plt.show()
Mask Uygulanmamış Resim
Mask Uygulanmış Resim




















5.Hafta Ders İçeriği

     #!/usr/bin/env python
     # coding: utf-8
     import numpy as np  #resmimizi gray level daha sonra bw aktarıcaz   t için e - 6   t için i - 2
     import matplotlib.pyplot as plt
     im1=plt.imread("3.png")
     plt.imshow(im1)
     plt.show()

     def get_distance(v,w=[1/3,1/3,1/3]):   #w ağırlık değeri
      a,b,c=v[0],v[1],v[2]
      w1,w2,w3=w[0],w[1],w[2]
      #d=((a*w1)**2+(b*w2)**2+(c*w3)**2)**.5 #sqrt işlemi var
      d=((a**2)*w1+(b**2)*w2+(c**2)*w3)**.5
      return d

     def convert_rgb_to_gray_level(im_1):
      m=im_1.shape[0]
      n=im_1.shape[1]
      im_2=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        im_2[i,j]=get_distance(im_1[i,j,:])
      return im_2

     def convert_rgb_to_BW(image_gray_level):
      m=image_gray_level.shape[0]
      n=image_gray_level.shape[1]
      im_bw=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        if image_gray_level[i,j]==0:
         im_bw[i,j]=0
        else:
         im_bw[i,j]=1
      return im_bw


     im2=convert_rgb_to_gray_level(im1)
     plt.imshow(im2,cmap='gray')
     plt.show()

     im3=convert_rgb_to_BW(im2)
     plt.imshow(im3,cmap='gray')
     plt.show()


     def pixel_compenent(resim):     #evde pixel compenenti ayrı fonksiyon yap ayır daha güzel olur
      m=resim.shape[0]   # siyah 0  beyaz 1 
      n=resim.shape[1]
      external=0
      internal=0
      for i in range (1,m-1):
       for j in range(1,n-1):
        poi=resim[i:i+2,j:j+2]
        siyah=0
        beyaz=0
        for k in range(2):
         for l in range(2):
          if poi[k][l]==1:
           beyaz=beyaz+1
          else:
           siyah=siyah+1
        if(siyah>beyaz and beyaz>0):
         internal=internal+1
        elif(beyaz>siyah and siyah>0):
         external=external+1
         
      print("dış kenar ",external)
      print("iç kenar ",internal)
      print("Nesne sayisi",(external-internal)/4)
      

     pixel_compenent(im3)



6.Hafta Ders İçeriği

     import numpy as np
     import matplotlib.pyplot as plt
     import random as random

     def my_create_m():
      return np.random.randint(0,2,(28,28))

     def MBR_create_28_by_28_with_0_1(matris_a):
      m=matris_a.shape[0]
      n=matris_a.shape[1]
      x_min=m
      x_max=0    #başlangıç değerleri olası en olumsuz durum
      y_min=n
      y_max=0
      for i in range(m):
       for j in range(n):
        if (matris_a[i,j]==1 and x_min>i):    # resim/matris üzerinden 
         x_min=i                          # x_min, .... güncelleniyor
        if (matris_a[i,j]==1 and x_maxj):
         y_min=j
        if (matris_a[i,j]==1 and y_maxbenzerlik_max):
       benzerlik_max=get_similarity(a,b)
       c=b
       
     print("En Yüksek Benzerlik : ",benzerlik_max)
     plt.imshow(a,interpolation='nearest',cmap='gray')
     plt.show()
     plt.imshow(c,interpolation='nearest',cmap='gray')
     plt.show()
      
     get_similarity_for_100_characters()



7.Hafta (Ödev)

     import numpy as np
     import matplotlib.pyplot as plt
     im1=plt.imread("7.jpg")
     im1.setflags(write="1")
     plt.imshow(im1)
     plt.show()

     def get_distance(v,w=[1/3,1/3,1/3]):   #w ağırlık değeri
      a,b,c=v[0],v[1],v[2]
      w1,w2,w3=w[0],w[1],w[2]
      #d=((a*w1)**2+(b*w2)**2+(c*w3)**2)**.5 #sqrt işlemi var
      d=((a**2)*w1+(b**2)*w2+(c**2)*w3)**.5
      return d


     def convert_rgb_to_gray_level(im_1):
      m=im_1.shape[0]
      n=im_1.shape[1]
      im_2=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        im_2[i,j]=get_distance(im_1[i,j,:])
      return im_2

     def convert_rgb_to_BW(image_gray_level):
      m=image_gray_level.shape[0]
      n=image_gray_level.shape[1]
      im_bw=np.zeros((m,n))
      for i in range(m):
       for j in range(n):
        if image_gray_level[i,j]>120:
         im_bw[i,j]=0
        else:
         im_bw[i,j]=1
      return im_bw

     def flatlist(liste):
      flat=[]
      for i in range (len(liste)):
       for j in range (len(liste)):
        flat.append(liste[i][j])
      return flat

     def apply_mask(liste,mask=[1,1,1,1,1,1,1,1,1]):
      liste2=flatlist(liste)
      result=0
      if liste2==mask:
       result=1
      return result

     def apply_mask2(liste,mask=[0,0,0,0,0,0,0,0,0]):
      liste2=flatlist(liste)
      result=1
      if liste2==mask:
       result=0
      return result

     im2=convert_rgb_to_gray_level(im1)
     im3=convert_rgb_to_BW(im2)

     def eresion(resim):
      m=resim.shape[0]   # siyah 0  beyaz 1 
      n=resim.shape[1]
      im4=np.zeros((m,n))
      for i in range (1,m-2):
       for j in range(1,n-2):
        b=resim[i-1:i+2,j-1:j+2]
        im4[i,j]=apply_mask(b)
      plt.imshow(im4,cmap='gray')
      plt.show()
      return im4

     def dilation(resim):
      m=resim.shape[0]   # siyah 0  beyaz 1 
      n=resim.shape[1]
      im6=np.zeros((m,n))
      for i in range (1,m-2):
       for j in range(1,n-2):
        b=resim[i-1:i+2,j-1:j+2]
        im6[i,j]=apply_mask2(b)
      plt.imshow(im6,cmap='gray')
      plt.show()
      return im6
      
     im5=eresion(im3)
     plt.imshow(im3,cmap='gray')
     plt.show()
     print(im5.shape,im3.shape)

     im7=dilation(im3)
     plt.imshow(im3,cmap='gray')
     plt.show()
     print(im7.shape,im3.shape)

     im10=plt.imread("1.jpg")
     im10.setflags(write="1")
     plt.imshow(im10)
     plt.show()

     im11=convert_rgb_to_gray_level(im10)
     plt.imshow(im11,cmap='gray')
     plt.show()

     im12=convert_rgb_to_BW(im11)
     plt.imshow(im12,cmap='gray')
     plt.show()

Orjinal Resim
Eresion Uygulanmış Hali
Dilation Uygulanmış Hali




10.Hafta Ders İçeriği

     #importing the libraries
     import numpy as np
     import matplotlib.pyplot as plt
     from sklearn import datasets
     from sklearn.decomposition import PCA
     import matplotlib.pyplot as plt
     from mpl_toolkits import mplot3d
     
     iris =datasets.load_iris()
     
     setosa=iris.data[0:50]
     versicolor=iris.data[50:100]
     virginica=iris.data[100:150]
     
     setosa_sepal_length_avg=np.mean(setosa[:,0])
     setosa_sepal_width_avg=np.mean(setosa[:,1])
     setosa_petal_length_avg=np.mean(setosa[:,2])
     setosa_petal_width_avg=np.mean(setosa[:,3])
     
     versicolor_sepal_length_avg=np.mean(versicolor[:,0])
     versicolor_sepal_width_avg=np.mean(versicolor[:,1])
     versicolor_petal_length_avg=np.mean(versicolor[:,2])
     versicolor_petal_width_avg=np.mean(versicolor[:,3])
     
     virginica_sepal_length_avg=np.mean(virginica[:,0])
     virginica_sepal_width_avg=np.mean(virginica[:,1])
     virginica_petal_length_avg=np.mean(virginica[:,2])
     virginica_petal_width_avg=np.mean(virginica[:,3])
     
     #eğer veriler sınıflara ayrılmışsa elimizdeki veri setinde sınıf sayısını bulabiliriz.
     def sinifsayisibul():
         h=[]
         for i in range(len(iris.target)):
             if (iris.target[i] in h):
                 continue
             else:
                 h.append(iris.target[i])
         return len(h)
         
     sinifsayisibul()
     fig=plt.figure()
     ax=plt.axes(projection='3d')
     
     xdata=iris.data[:,0]
     ydata=iris.data[:,2]
     zdata=iris.data[:,3]
     label=iris.target
     
     ax.scatter3D(xdata[100:149], ydata[100:149], zdata[100:149],marker='o')
     ax.scatter3D(xdata[50:99], ydata[50:99], zdata[50:99],marker='x')
     ax.scatter3D(xdata[0:49], ydata[0:49], zdata[0:49],marker='x')
     
     
     def get_mu_s():
         mu_0=[5,2,0]
         mu_1=[4,4,0]
         mu_2=[3,2,5]
         
         return mu_0,mu_1,mu_2
     
     def get_distance(mu,point):
         x=mu[0]-point[0]
         y=mu[1]-point[1]
         z=mu[2]-point[2]
         return (x**2+y**2+z**2)**0.5
     
     
     def get_class_for_one_instance(flower):
         mu_s = get_mu_s()
         d_0 = get_distance(mu_s[0], flower)
         d_1 = get_distance(mu_s[1], flower)
         d_2 = get_distance(mu_s[2], flower)
         
         if((d_0 < d_1) and (d_0 < d_2)):
             return "0"
         if((d_1 < d_0) and (d_1 < d_2)):
             return "1"
         if((d_2 < d_1) and (d_2 < d_0)):
             return "2"
         
     
     def my_f_1(s_1=125):
         x=iris.data[s_1][0]
         y=iris.data[s_1][2]
         z=iris.data[s_1][3]
         my_f_1=[x,y,z]
         r=get_class_for_one_instance(my_f_1)
         print(r)
         
     for i in range(150):
         my_f_1(i)
     
         
     def get_flower(i): 
         #iris data üzerinde bana i değerinde gelen datanın 0 2 3 sütunun donduruyorum
         x=iris.data[i][0]
         y=iris.data[i][2]
         z=iris.data[i][3]
         return [x,y,z]
         
         
     def update_mu(): 
         #150 ya kadar her bir çicek için bana class bilgisi ver güncelle ve geriye mu'leri ver
         hata="yok"
         mu_0_counter=0.0001
         mu_0_sum=0
         
         mu_1_counter=0.0001
         mu_1_sum=0
         
         mu_2_counter=0.0001
         mu_2_sum=0
         
         c_1=[]
         c_2=[]
         c_3=[]
         
         for i in range(150):
             my_flower_data=get_flower(i)
             f_class = get_class_for_one_instance(my_flower_data)
             hata="var"
             if(f_class=="0"):
                 c_1.append(my_flower_data)
             if(f_class=="1"):
                 c_2.append(my_flower_data)
             if(f_class=="2"):
                 c_3.append(my_flower_data)
         return c_1,c_2,c_3
         
         
     c_1,c_2,c_3 = update_mu()
     print(len(c_1))
     print(len(c_2))
     print(len(c_3))

K-Means Sınıflandırma



Hiç yorum yok:

Yorum Gönder