Konu: Görüntü İşleme dersinde yapılan örnekler, verilen ödevler ve uygulama örnekleri...
Ödev1: Python için IDE yazılımlarından kullanacağınız yazılımın kurulumunu yapınız.
Cevap: Anaconda(Jupyter Notebook), Visual Studio Code, PyCharm, Wingware, Sublime Text
Ödev2: Telefonlarda kullanılan 5 adet görüntü işleme programı yazınız.
Cevap: Prisma(Instagram), Snapseed(Google), PhotoGrid, PicsArt, FotoRus
Ödev3: Python'da rasgele bir dizi üretip, dizide geçen elemanların sayısını (frekans) ekrana yazdırın.
Cevap:
Ödev4: Görüntü işleme için kullanılan kütüphaneler (numpy,matplotlib gibi) yardımıyla bilgisayarda bulunan bir resim dosyasını açıp, resim daire olacak şekilde kırpılacak ve dairenin dışında kalan alan beyaz olacaktır. En son bu görüntüyü ekrana bastırın.
Cevap:
Ödev5:
1- 25 adet resim üretilecek ve ekranda görüntülecek.
2- Görüntülenen resimler siyah-beyaz'a dönüştürülecek.
3- reshape fonksiyonu ile resim boyutu vektöre dönüştürülecek. Matris 100x100 ise 1x10000 olacak.
4- center fonksiyonu ile a b c d e değerlerini kıyaslayıp harf grupları belirlenecek.
5- Test. Bir resim dosyası harf grupları ile kıyaslanacak ve hangi harf olduğunu söylenecek.
Cevap: Kodlar için tıklayın.
Ödev6:
1- Bir adet nesnelerden oluşan resim üretilecek ve ekranda görüntülecek.
2- Görüntülenen resim siyah-beyaz'a dönüştürülecek.
3- Resim içerisinde kaç adet nesne bulunduğu ekrana yazdırılacak.
Cevap: Kodlar için tıklayın.
Ödev7:
1- imread ile resim okunacak.
2- Resim dosyası sırasıyla jpg -> graylevel -> BlackWhite dönüştürülecek.
3- Spacity - Matrix oluşturacak Vect class'ı oluşturulacak. (Type: Dictionary)
Cevap: Kodlar için tıklayın.
Ödev8:
1- imread ile resim okunacak.
2- Resim dosyası BlackWhite'a dönüştürülecek.
3- Mask yardımı ile Dilation(Genişletme) işlemi yapılacak.
Cevap: Kodlar için tıklayın.


















Bu örnekte kulandığımız veri setine ulaşmak için tıklayınız.




ÖDEVLER
Cevap: Anaconda(Jupyter Notebook), Visual Studio Code, PyCharm, Wingware, Sublime Text
Ödev2: Telefonlarda kullanılan 5 adet görüntü işleme programı yazınız.
Cevap: Prisma(Instagram), Snapseed(Google), PhotoGrid, PicsArt, FotoRus
Ödev3: Python'da rasgele bir dizi üretip, dizide geçen elemanların sayısını (frekans) ekrana yazdırın.
Cevap:
#!/usr/bin/python
import random
sayac = 0
dizi = []
sayi = int(input("Kaç elemanlı bir dizi üretilsin?\n>>> "))
while(sayac < sayi):
a = random.randint(0,100)
dizi.append(a)
sayac += 1
dizi.sort()
print(dizi)
print("Eleman : Adet")
adet = 0
for i in range(sayi):
adet = 1
for j in range(i, sayi-1):
if(dizi[i] == dizi[j+1] and (dizi[i] != -1 or dizi[j+1] != -1)):
adet += 1
dizi[j+1] = -1
if(dizi[i] != -1):
print(dizi[i], "\t:", adet, "adet")

Ödev4: Görüntü işleme için kullanılan kütüphaneler (numpy,matplotlib gibi) yardımıyla bilgisayarda bulunan bir resim dosyasını açıp, resim daire olacak şekilde kırpılacak ve dairenin dışında kalan alan beyaz olacaktır. En son bu görüntüyü ekrana bastırın.
Cevap:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.cbook as cbook
with cbook.get_sample_data('C:\\Users\eraya\Desktop\p.jpg') as image_file:
image = plt.imread(image_file)
fig, ax = plt.subplots()
im = ax.imshow(image)
patch = patches.Circle((256, 256), radius=200, transform=ax.transData)
im.set_clip_path(patch)
ax.axis('on')
plt.show()

Ödev5:
1- 25 adet resim üretilecek ve ekranda görüntülecek.
2- Görüntülenen resimler siyah-beyaz'a dönüştürülecek.
3- reshape fonksiyonu ile resim boyutu vektöre dönüştürülecek. Matris 100x100 ise 1x10000 olacak.
4- center fonksiyonu ile a b c d e değerlerini kıyaslayıp harf grupları belirlenecek.
5- Test. Bir resim dosyası harf grupları ile kıyaslanacak ve hangi harf olduğunu söylenecek.
Cevap: Kodlar için tıklayın.
Ödev6:
1- Bir adet nesnelerden oluşan resim üretilecek ve ekranda görüntülecek.
2- Görüntülenen resim siyah-beyaz'a dönüştürülecek.
3- Resim içerisinde kaç adet nesne bulunduğu ekrana yazdırılacak.
Cevap: Kodlar için tıklayın.
Ödev7:
1- imread ile resim okunacak.
2- Resim dosyası sırasıyla jpg -> graylevel -> BlackWhite dönüştürülecek.
3- Spacity - Matrix oluşturacak Vect class'ı oluşturulacak. (Type: Dictionary)
Cevap: Kodlar için tıklayın.
Ödev8:
1- imread ile resim okunacak.
2- Resim dosyası BlackWhite'a dönüştürülecek.
3- Mask yardımı ile Dilation(Genişletme) işlemi yapılacak.
Cevap: Kodlar için tıklayın.
HAFTA - 1 (28 Eylül 2017 Perşembe)
import math
def findDistance(p0,p1):
return math.sqrt(((p0[0]-p1[0])**2)+((p0[1]-p1[1])**2))
d = findDistance([3,0],[0,4])
d #5.0
from scipy import ndimage
from scipy import misc
f = misc.face()
import matplotlib.pyplot as plt
plt.imshow(f)
plt.show()

f.ndim #3 f.shape #(768, 1024, 3) type (f) #numpy.ndarray f[:,:,1] = 0 plt.imshow(f) plt.show() type (f.shape) #tuple

im_size = f.shape
im_size[0] #768
center = [im_size[0]/2, im_size[1]/2]
center #[384.0, 512.0]
from scipy import ndimage
from scipy import misc
f = misc.face()
import matplotlib.pyplot as plt
for i in range(im_size[0]):
for j in range(im_size[1]):
if (findDistance([i,j], center)>350):
f[i,j,:] = 0, 0, 0
plt.imshow(f)
plt.show()
HAFTA - 2 (5 Ekim 2017 Perşembe)
import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np img=mpimg.imread(r'c:\stinkbug.png') img.ndim #3 img.shape #(375,500,3) plt.imshow(img) plt.show()

img[:,100,:].max() #0.627451 img_1=img[1:375:2,:,:] #1:375:2 -> x bileşeni için 1'den 375'e kadar ikişer artarak git. img_1=img[:,1:500:2,:] #1:500:2 -> y bileşeni için 1'den 500'e kadar ikişer artarak git. #plt.subplot(1,2,1), plt.imshow(img) #plt.subplot(1,2,2), plt.imshow(img_1) plt.imshow(img_1) plt.show()

img.ndim, img.shape #(3, (375, 500, 3))
img_20=np.zeros((500,375,3))
img_20.shape #(500, 375, 3)
#img ile img_20 birbirinin transpozu değerler olmalıdır.
for i in range(375):
for j in range(500):
img_20[j,i,:]=img[i,j,:] #x ve y'ye göre transpoz işlemidir.
#print(img[i,j,:]) #Bu döngü resimdeki bütün RGB değerlerini verir.
img_30=np.zeros((500,375,3))
img_30.shape
for i in range(375):
for j in range(500):
img_30[j,i,:]=1-img[i,j,:] #Resmin negatifini alır.
img_40=np.zeros((375,500,3))
img_40.shape
for i in range(375):
for j in range(500):
img_40[375-i-1,50-j-1,:]=img[i,j,:] #Resmin x ve y'ye göre simetriği yani orjine göre ayna görüntüsünü alır.
plt.subplot(1,4,1),plt.imshow(img)
plt.subplot(1,4,2),plt.imshow(img)
plt.subplot(1,4,3),plt.imshow(img)
plt.subplot(1,4,4),plt.imshow(img)

def createList(size):
myList=[]
for i in range(size):
myList.append(i)
return myList
def listIncrement(l,n):
myL=[]
for i in range(len(l)):
myL.append(l[i]+n) #l[i]=l[i]+n
return l
L_1=createList(5)
L_1
L_2=listIncrement(L_1,5)
L_2 #[0, 1, 2, 3, 4]
#%timeit -> Fonksiyonun çalışma zamanı
#createList(1000)
#1000 adet eleman oluşturmayı 236 milisaniyede yapıyor.
%timeit myL_1=listIncrement(createList(1000),50)
#1000 loops, best of 3: 236 µs per loop
#1000 adet eleman oluşturmayı 2.95 milisaniyede yapıyor.
%timeit np.arange(1000)+1
#The slowest run took 10.45 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 2.95 µs per loop
import numpy as np
size=10
my_10=np.arange(size)
my_10 #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
my_10+1 #array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
HAFTA - 3 (12 Ekim 2017 Perşembe)
import matplotlib.pyplot as plt
plt.plot([1,4,9,16])
plt.xlabel('any numbers')
plt.ylabel('some numbers')
plt.show()

import matplotlib.pyplot as plt
import numpy as np
img_1=plt.imread("test.jpg")
img_1.ndim, img_1.shape #(3, (768, 1024, 3))
plt.imshow(img_1[:,:,2] + 10)
plt.show()

#pixel_1_rgb=[0,0,0]
#pixel_1_gray_level=0
#pixel_1_rgb=[10,0,0]
#pixel_1_gray_level=10
#pixel_1_rgb=[0,10,0]
#pixel_1_gray_level=10
#pixel_1_rgb=[10,10,10]
#pixel_1_gray_level=12
def convertRGBPixelToGrayLevel(RGB_Pixel):
return RGB_Pixel[0]/3 + RGB_Pixel[1]/3 + RGB_Pixel[2]/3
convertRGBPixelToGrayLevel([2,5,7]) #4.666666666666667
img_2=np.zeros((img_1.shape[0],img_1.shape[1]))
img_2.shape #(768, 1024)
for i in range(img_1.shape[0]):
for j in range(img_1.shape[1]):
img_2[i,j]=convertRGBPixelToGrayLevel(img_1[i,j,:])
plt.subplot(1,2,1)
plt.imshow(img_1)
plt.subplot(1,2,2)
plt.imshow(img_2, cmap='gray')
plt.show()

from scipy.misc import imsave
imsave('test_2.jpg',img_2)
#Bulunduğumuz klasöre test_2.jpg adlı bir resim dosyası oluşturuldu.
import matplotlib.pyplot as plt
from scipy.misc import imsave
def convertRGB_To_GrayLevel(image_1):
img_1=plt.imread(image_1)
img_2=np.zeros((img_1.shape[0],img_1.shape[1]))
for i in range(img_1.shape[0]):
for j in range(img_1.shape[1]):
img_2[i,j]=img_1[i,j,0]/3 + img_1[i,j,1]/3 + img_1[i,j,2]/3
imsave(str(image_1)+".jpg",img_2)
plt.subplot(1,2,1)
plt.imshow(img_1)
plt.subplot(1,2,2)
plt.imshow(img_2, cmap='gray')
plt.show()
convertRGB_To_GrayLevel('test.jpg')

img_1=plt.imread('var.jpg')
img_2=plt.imread('yok.jpg')
plt.imshow(img_2-img_1)
plt.show()
HAFTA - 4 (19 Ekim 2017 Perşembe)
from scipy import misc f = misc.face(gray=True) import matplotlib.pyplot as plt plt.imshow(f, cmap=plt.cm.gray) plt.show()

import matplotlib.pyplot as plt
import numpy as np
#pwd
#ls *.jpg
img_1=plt.imread("C:\\Users\\eraya\\Desktop\\JupyterExample\\test.jpg")
img_1.ndim
img_1.shape
img_2=img_1[1:768:2,1:1024:2]
img_2.ndim
img_2.shape
plt.imshow(img_2)
plt.show()

img_3=np.zeros((img_2.shape[0:2]))
img_3.shape #(384, 512)
img_4=np.zeros((img_2.shape[0:2]))
img_4.shape #(384, 512)
for i in range(img_2.shape[0]): #384
for j in range(img_2.shape[1]): #512
n=img_2[i,j,0]/3+img_2[i,j,1]/3+img_2[i,j,2]/3
img_3[i,j]=n
if n>100:
img_4[i,j]=255
else:
img_4[i,j]=0
img_3.shape
#plt.imshow(img_3,plt.cm.gray)
plt.imshow(img_4,plt.cm.gray)
plt.show()

threshold=80
for i in range(img_2.shape[0]): #384
for j in range(img_2.shape[1]): #512
n=img_2[i,j,0]/3+img_2[i,j,1]/3+img_2[i,j,2]/3
img_3[i,j]=n
if n>threshold:
img_4[i,j]=255
else:
img_4[i,j]=0
plt.subplot(1,3,1), plt.imshow(img_2)
plt.subplot(1,3,2), plt.imshow(img_3,plt.cm.gray)
plt.subplot(1,3,3), plt.imshow(img_4,plt.cm.binary)
plt.imshow(img_4,plt.cm.gray)#Derste gray->binary yapıldı ama tahtadaki ekran görüntüsü aynı.
plt.show()

import matplotlib.pyplot as plt
import numpy as np
#pwd
#ls *.jpg
img_1=plt.imread("C:\\Users\\eraya\\Desktop\\JupyterExample\\ekrangoruntusu.png")
img_1.ndim
img_1.shape #(374, 994, 4)
#img_2=img_1[1:768:2,1:1024:2]
img_2=img_1
img_4=np.zeros((img_2.shape))
img_5=img_1
img_5=np.zeros((img_2.shape[0:2]))
img_5.shape #(374, 994)
threshold=0
for i in range(img_2.shape[0]): #384
for j in range(img_2.shape[1]): #512
n=img_2[i,j,0]/3+img_2[i,j,1]/3+img_2[i,j,2]/3
if n>threshold:
img_5[i,j]=255
else:
img_5[i,j]=0
plt.subplot(1,2,1), plt.imshow(img_2)
plt.subplot(1,2,2), plt.imshow(img_5,plt.cm.binary)
#plt.imshow(img_5,plt.cm.binary)#Derste gray->binary yapıldı ama tahtadaki ekran görüntüsü aynı.
plt.show()

img_2.ndim, img_2.shape, img_2.mean() #(3, (374, 994, 4), 0.94397408)
img_1 = plt.imread('C:\\Users\\eraya\\Desktop\\JupyterExample\\adsiz.jpg')
img_1.ndim,img_1.shape
img_5=np.zeros((img_1.shape[0:2]))
img_2=img_1
img_2.shape,img_5.shape
threshold=0
for i in range(img_2.shape[0]): #384
for j in range(img_2.shape[1]): #512
n=img_2[i,j,0]/3+img_2[i,j,1]/3+img_2[i,j,2]/3
if n>threshold:
img_5[i,j]=255
else:
img_5[i,j]=0
plt.subplot(1,2,1), plt.imshow(img_2)
plt.subplot(1,2,2), plt.imshow(img_5,plt.cm.binary)
#plt.imshow(img_5,plt.cm.binary)#Derste gray->binary yapıldı ama tahtadaki ekran görüntüsü aynı.
plt.show()
HAFTA - 5 (26 Ekim 2017 Perşembe)
myPoint_1 = [0,0]
myPoint_2 = [1,0]
myPoint_3 = [0,1]
myPoint_4 = [1,1]
import math
def uzaklik():
value=(myPoint_1[0]-myPoint_2[0])**2 + (myPoint_1[1]-myPoint_2[1])**2
return value
d_1_2 = math.sqrt(uzaklik())
d_1_2 #1.0
#İki vektör arasındaki uzaklığı bulan fonksiyon.
import math
def myDistance(a,b):
myPoint_1=a
myPoint_2=b
a=(myPoint_1[0]-myPoint_2[0])**2
b=(myPoint_1[1]-myPoint_2[1])**2
return math.sqrt(a+b)
myPoint_1 = [0,0]
myPoint_2 = [1,0]
myPoint_3 = [0,1]
myPoint_4 = [1,1]
myDistance(myPoint_2,myPoint_3) #1.4142135623730951
#İki noktanın orta noktası bulundu. a=myPoint_1[0]+myPoint_2[0]+myPoint_3[0]+myPoint_4[0] b=myPoint_1[1]+myPoint_2[1]+myPoint_3[1]+myPoint_4[1] centerPoint=[a/4,b/4] centerPoint #[0.5, 0.5]
def findCenter(List_Of_Points):
a=0
b=0
for point in List_Of_Points:
a=a+point[0]
b=b+point[1]
l=len(List_Of_Points)
return [a/l,b/l]
myPoint_1 = [0,0]
myPoint_2 = [1,0]
myPoint_3 = [0,1]
myPoint_4 = [1,1]
my_Point_List=[]
my_Point_List.append(myPoint_1)
my_Point_List.append(myPoint_2)
my_Point_List.append(myPoint_3)
my_Point_List.append(myPoint_4)
len(my_Point_List) #4
center=findCenter(my_Point_List)
center #[0.5, 0.5]
import numpy as np
my_Array=np.array([[1,2,3],[2,6,9]],np.int32)
my_Array.ndim, my_Array.shape
my_Array_1=my_Array.reshape(1,6)
print(my_Array)
print("")
print(my_Array_1)
#[[1 2 3]
# [2 6 9]]
#
#[[1 2 3 2 6 9]]
HAFTA - 6 (2 Kasım 2017 Perşembe)
# T harfi için # 0: Black # 1: White # of edge: 8 # of corner: 8 # External 1 0 veya 0 1 veya 0 0 veya 0 0 # 0 0 0 0 1 0 0 1 # Internal 0 1 veya 1 0 veya 1 1 veya 1 1 # 1 1 1 1 0 1 1 0
internal_mask_1=[[1,0],[0,0]] internal_mask_2=[[0,1],[0,0]] internal_mask_3=[[0,0],[1,0]] internal_mask_4=[[0,0],[0,1]] external_mask_1=[[0,1],[1,1]] external_mask_2=[[1,0],[1,1]] external_mask_3=[[1,1],[0,1]] external_mask_4=[[1,1],[1,0]] internal_mask_list=[internal_mask_1,internal_mask_2,internal_mask_3,internal_mask_4] external_mask_list=[external_mask_1,external_mask_2,external_mask_3,external_mask_4]
import numpy as np
import matplotlib.pyplot as plt
size=3
#-------------------Random Image-------------------
img_1=np.random.randint(0,2,(size,size))
#img_1 -> fake image, you should read from a file
plt.subplot(1,2,1), plt.imshow(img_1,cmap='Greys',interpolation='nearest')
#---------------------My Image---------------------
img=plt.imread("C:\\Users\\eraya\\Desktop\\JupyterExample\\t-harfi.jpg")
plt.subplot(1,2,2), plt.imshow(img,cmap='Greys',interpolation='nearest')
plt.show()

def count_mask(image,mask):
# input:
# image m*n black-white image
# mask 2*2 mask
#
counter=0
m,n=image.shape
for i in range(m-1):
for j in range(n-1):
a=b=c=d=False
if(image[i,j] == mask[0][0]):
a=True
if(image[i,j+1] == mask[0][1]):
b=True
if(image[i+1,j] == mask[1][0]):
c=True
if(image[i+1,j+1] == mask[1][1]):
d=True
if(a and b and c and d):
counter=counter+1
return counter
def count_internal_mask(image):
counter_internal=0
for mask in internal_mask_list:
counter_internal=counter_internal+count_mask(img_1,mask)
return counter_internal
def count_external_mask(image):
counter_external=0
for mask in external_mask_list:
counter_external=counter_external+count_mask(img_1,mask)
return counter_external
c_1=count_internal_mask(img_1) # Köşe sayısı c_2=count_external_mask(img_1) # Köşe içinde kalan alan c_1, c_2 #(0,1)
# T harfini içeren resim için çıktı. import math abs(c_1-c_2)/4 #0.25
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy.misc import imsave
%matplotlib inline
def convert_RGB_to_gray_level(image_1):
img_1=plt.imread(image_1)
img_2=np.zeros((img_1.shape[0],img_1.shape[1]))
for i in range(img_2.shape[0]):
for j in range(img_2.shape[1]):
img_2[i,j]=img_1[i,j,0]/3+img_1[i,j,1]/3+img_1[i,j,2]/3
# print(img_1.shape)
return img_2
def convert_RGB_to_monochrome_BW(image_1,threshold=100):
img_1=plt.imread(image_1)
img_2=np.zeros((img_1.shape[0],img_1.shape[1]))
for i in range(img_2.shape[0]):
for j in range(img_2.shape[1]):
if (img_1[i,j,0]/3+img_1[i,j,1]/3+img_1[i,j,2]/3)>threshold:
# img_2[i,j]=img_1[i,j,0]/3+img_1[i,j,1]/3+img_1[i,j,2]/3
img_2[i,j]=1
else:
img_2[i,j]=0
# print(img_1.shape)
return img_2
def create_mask_internal():
i_m_1=np.array([[1,0],[0,0]])
i_m_2=np.array([[0,1],[0,0]])
i_m_3=np.array([[0,0],[1,0]])
i_m_4=np.array([[0,0],[0,1]])
i_m_l=[i_m_1,i_m_2,i_m_3,i_m_4]
return i_m_l
def create_mask_external():
e_m_1=np.array([[0,1],[1,1]])
e_m_2=np.array([[1,0],[1,1]])
e_m_3=np.array([[1,1],[0,1]])
e_m_4=np.array([[1,1],[1,0]])
e_m_l=[e_m_1,e_m_2,e_m_3,e_m_4]
return e_m_l
def count_object(image_name_with_path,threshold=150):
img_file_1=image_name_with_path
img_file_2=convert_RGB_to_gray_level(img_file_1)
img_file_3=convert_RGB_to_monochrome_BW(img_file_1,threshold)
image=img_file_3
c_1=0
c_2=0
m,n=image.shape
for i in range(m-1):
for j in range(n-1):
for mask in create_mask_internal():
if False not in (img_file_3[i:i+2,j:j+2]==mask):
#print("e mask bulundu")
c_1=c_1+1
for mask in create_mask_external():
if False not in (img_file_3[i:i+2,j:j+2]==mask):
#print("i mask bulundu")
c_2=c_2+1
number_of_objects=math.fabs((c_2-c_1)/4)
print("Resimdeki Toplam T Sayısı:", number_of_objects)
return number_of_objects
image_file_1=r"C:\\Users\\eraya\\Desktop\\JupyterExample\\test_t.jpg" count_object(image_file_1) # Resimdeki Toplam T Sayısı: 6.0 # 6.0

image_file_2=r"C:\\Users\\eraya\\Desktop\\JupyterExample\\test_karisik.jpg" count_object(image_file_2) # Resimdeki Toplam Nesne Sayısı: 13.0 # 13.0

HAFTA - 7 (9 Kasım 2017 Perşembe)
import numpy as np
import matplotlib.pyplot as plt
my_Numbers=np.random.randint(1,10,5)
my_Numbers #array([1, 4, 2, 3, 7])
myHistogram=[]
myHistogram #[]
for number in my_Numbers:
for histItem in myHistogram:
if(number==histItem[0]):
histItem[1]=histItem[1]+1
else:
myHistogram.append(number,1)
myHistogram #[]
var_1=(1,2,3)
var_2=(2,5,3)
var_3=(1,5,3)
var_4=(2,5,6)
if var_1[2]==var_2[2]:
print("1 ve 2'nin 3.değeri eşittir.")
else:
print("1 ve 2'nin 3.değeri eşit değildir.")
if var_1==var_2:
print("1 ve 2 eşittir.")
else:
print("1 ve 2 eşit değildir.")
import numpy as np
import matplotlib.pyplot as plt
start=0
end=2
n=5
my_Numbers=np.random.randint(start,end,n)
img=plt.imread("")
myHistogram={}
my_Numbers #array([0, 1, 0, 1, 0])
for number in my_Numbers:
if number in myHistogram.keys():
myHistogram[number]=myHistogram[number]+1
else:
myHistogram[number]=1
my_Numbers, myHistogram, myHistogram[0]/myHistogram[1]
#histogram da iki değer olmalı
#(array([0, 1, 0, 1, 0]), {0: 3, 1: 2}, 1.5)
import matplotlib.pyplot as plt
import numpy as np
def convert_RGB_to_monochrome_BW(image_1):
threshold=100
img_1=plt.imread(image_1)
img_2=np.zeros((img_1.shape[0],img_1.shape[1]))
for i in range(img_2.shape[0]):
for j in range(img_2.shape[1]):
if (img_1[i,j,0]/3+img_1[i,j,1]/3+img_1[i,j,2]/3)>threshold:
# img_2[i,j]=img_1[i,j,0]/3+img_1[i,j,1]/3+img_1[i,j,2]/3
img_2[i,j]=1
else:
img_2[i,j]=0
# print(img_1.shape)
return img_2
img_1 = convert_RGB_to_monochrome_BW(r"test_t_one.jpg")
plt.imshow(img_1, cmap="gray")
plt.show()

img_1.ndim, img_1.shape #(2, (400, 400)) i2 = img_1.reshape(1,img_1.shape[0]*img_1.shape[1]) i2.ndim, i2.shape #(2, (1, 160000))
def get_Histogram(image): #resim monochrome olmalı
my_Histogram = {}
for i in range(image.shape[0]):
for j in range(image.shape[1]):
item=image[i,j]
if item in my_Histogram.keys():
my_Histogram[item]=my_Histogram[item]+1
else:
my_Histogram[item]=1
return my_Histogram
my_Histogram = get_Histogram(img_1)
my_Histogram #{0.0: 2936, 1.0: 157064}
x = my_Histogram[0.0]
y = my_Histogram[1.0]
print("Siyah-Beyaz Oranı: ", x/y) #Siyah-Beyaz Oranı: 0.01869301685936943
class myMatrix():
def __init__(self,x,y):
self.D=x
self.F=y
def create_D_F(img_1):
d = {(i,j) for i in range(img_1.shape[0])
for j in range(img_1.shape[1])
if img_1[i,j]==1
}
f = {(i,j):1 for i,j in d}
m=myMatrix(d,f)
return m
my_sparce_Matrix_1=create_D_F(img_1)
my_sparce_Matrix_1.D, my_sparce_Matrix_1.F
Sonuç: ({(266, 351), (109, 365), (381, 392), (312, 241), (185, 101), (5, 178), (171, 86), (104, 115), (157, 23), (30, 287), (284, 367), (323, 275), ...}, {(266, 351): 1, (109, 365): 1, (381, 392): 1, (312, 241): 1, (185, 101): 1, (5, 178): 1, (171, 86): 1, (104, 115): 1, (157, 23): 1, (30, 287): 1, (284, 367): 1, (323, 275): 1, ...})
HAFTA - 8 (23 Kasım 2017 Perşembe)
import csv
import random
import math
def loadCsv(filename):
lines = csv.reader(open(filename, "r"))
dataset = list(lines)
for i in range(len(dataset)):
dataset[i] = [float(x) for x in dataset[i]]
return dataset
def splitDataset(dataset, splitRatio):
trainSize = int(len(dataset) * splitRatio)
trainSet = []
copy = list(dataset)
while len(trainSet) < trainSize:
index = random.randrange(len(copy))
trainSet.append(copy.pop(index))
return [trainSet, copy]
def separateByClass(dataset):
separated = {}
for i in range(len(dataset)):
vector = dataset[i]
if (vector[-1] not in separated):
separated[vector[-1]] = []
separated[vector[-1]].append(vector)
return separated
def mean(numbers):
return sum(numbers)/float(len(numbers))
def stdev(numbers):
avg = mean(numbers)
variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1)
return math.sqrt(variance)
def summarize(dataset):
summaries = [(mean(attribute), stdev(attribute)) for attribute in zip(*dataset)]
del summaries[-1]
return summaries
def summarizeByClass(dataset):
separated = separateByClass(dataset)
summaries = {}
for classValue, instances in separated.items():
summaries[classValue] = summarize(instances)
return summaries
def calculateProbability(x, mean, stdev):
exponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2))))
return (1 / (math.sqrt(2*math.pi) * stdev)) * exponent
def calculateClassProbabilities(summaries, inputVector):
probabilities = {}
for classValue, classSummaries in summaries.items():
probabilities[classValue] = 1
for i in range(len(classSummaries)):
mean, stdev = classSummaries[i]
x = inputVector[i]
probabilities[classValue] *= calculateProbability(x, mean, stdev)
return probabilities
def predict(summaries, inputVector):
probabilities = calculateClassProbabilities(summaries, inputVector)
bestLabel, bestProb = None, -1
for classValue, probability in probabilities.items():
if bestLabel is None or probability > bestProb:
bestProb = probability
bestLabel = classValue
return bestLabel
def getPredictions(summaries, testSet):
predictions = []
for i in range(len(testSet)):
result = predict(summaries, testSet[i])
predictions.append(result)
return predictions
def getAccuracy(testSet, predictions):
correct = 0
for i in range(len(testSet)):
if testSet[i][-1] == predictions[i]:
correct += 1
return (correct/float(len(testSet))) * 100.0
def main():
filename = 'pima-indians-diabetes.data.csv'
splitRatio = 0.67
dataset = loadCsv(filename)
trainingSet, testSet = splitDataset(dataset, splitRatio)
# print('Split {0} rows into train={1} and test={2} rows').format(len(dataset), len(trainingSet), # prepare model
summaries = summarizeByClass(trainingSet)
# test model
predictions = getPredictions(summaries, testSet)
accuracy = getAccuracy(testSet, predictions)
print('Accuracy: ' + str(accuracy))
main() #Accuracy: 72.83464566929135
HAFTA - 9 (30 Kasım 2017 Perşembe)
import matplotlib.pyplot as plt
import numpy as np
def convert_RGB_to_monochrome_BW(image_1):
threshold=200
img_1=plt.imread(image_1)
img_2=np.zeros((img_1.shape[0],img_1.shape[1]))
for i in range(img_2.shape[0]):
for j in range(img_2.shape[1]):
if (img_1[i,j,0]/3+img_1[i,j,1]/3+img_1[i,j,2]/3)>threshold:
img_2[i,j]=0
else:
img_2[i,j]=1
return img_2
def define_mask():
mask = [[1,1,1],[1,1,1],[1,1,1]]
for i in range(3):
for j in range(3):
print(mask[i][j], end=" ")
print()
return mask
def my_dilation(img_1, mask):
m=img_1.shape[0]
n=img_1.shape[1]
img_2 = np.random.randint(0,1,(m,n))
for i in range(1,m-1):
for j in range(1,n-1):
x_1 = img_1[i,j] and mask[1][1]
x_2 = img_1[i-1,j-1] and mask[0][0]
x_3 = img_1[i-1,j] and mask[0][1]
x_4 = img_1[i-1,j+1] and mask[0][2]
x_5 = img_1[i+1,j+1] and mask[2][0]
x_6 = img_1[i+1,j] and mask[2][1]
x_7 = img_1[i+1,j+1] and mask[2][2]
x_8 = img_1[i,j-1] and mask[1][0]
x_9 = img_1[i,j+1] and mask[1][2]
result_1 = x_1 or x_2 or x_3 or x_4 or x_5
result_2 = x_6 or x_7 or x_8 or x_9
result = result_1 or result_2
img_2[i,j]=result
return img_2
mask = define_mask()
path = r"test_t_one.jpg"
image1 = convert_RGB_to_monochrome_BW(path)
image2 = my_dilation(image1, define_mask())
image3 = my_dilation(image2, define_mask())
plt.imshow(image1, cmap="gray"), plt.show()
plt.imshow(image2, cmap="gray"), plt.show()
plt.imshow(image3, cmap="gray"), plt.show()

HAFTA - 10 (14 Aralık 2017 Perşembe)
import matplotlib.pyplot as plt
import numpy as np
image = plt.imread("C:\\Users\\eraya\\Desktop\\JupyterExample\\q.jpg")
image.shape #(200, 200, 3)
plt.imshow(image)
plt.show()
for i in range(image.shape[0]):
for j in range(image.shape[1]):
if(i < image.shape[0]/2):
image[i,j] = 0
if(j < image.shape[1]/2):
image[i,j] = 0
plt.imshow(image)
plt.show()
from scipy.misc import imrotate
derece = 90
new_image = imrotate(image, derece)
plt.imshow(new_image)
plt.show()
HAFTA - 11 (21 Aralık 2017 Perşembe)
#Rotate by Theta
import matplotlib.pyplot as plt
import numpy as np
import math
def get_image(path: str = u"C:\\Users\\eraya\\Desktop\\JupyterExample", file: str = u"a_1.png"):
"""
:rtype: object
"""
if ((path is None) or (file is None)):
path = u"C:\\Users\\eraya\\Desktop\\JupyterExample"
file = u"a_1.png"
image_file_1 = path + u"\\" + file
img_1 = plt.imread(image_file_1)
plt.imshow(img_1)
plt.show()
return img_1
def get_rotation_matrix_for_angle(angle: float):
theta = angle
rotation_matrix = np.array([[math.cos(theta), -math.sin(theta)], [math.sin(theta), math.cos(theta)]], np.float)
return rotation_matrix
def get_new_point(old_point: list, angle: float):
old_point_i, old_point_j = old_point[0], old_point[1]
rotation_matrix = get_rotation_matrix_for_angle(angle)
point = np.array([old_point_i, old_point_j], np.float)
point = point.reshape(2, 1)
new_point = np.matmul(rotation_matrix, point)
x = int(new_point[0])
y = int(new_point[1])
return [x, y]
def get_new_canvas_for_an_image(m: int, n: int, angle: float, dim: str = 3):
old_corners = [[0, 0], [m, 0], [0, n], [m, n]]
new_corners = []
for p in old_corners:
p_new = get_new_point(p, angle)
new_corners.append(p_new)
# print(p_new)
y_min = min([y for x, y in new_corners])
y_max = max([y for x, y in new_corners])
y_min, y_max
x_min = min([x for x, y in new_corners])
x_max = max([x for x, y in new_corners])
x_min, x_max
m = int(abs(x_max - x_min))
n = int(abs(y_max - y_min))
img_2 = np.zeros((m, n, dim))
return img_2
def get_rotated_image(image, angle: float):
"""
:type angle: object
"""
new_image_rotated = get_new_canvas_for_an_image(image.shape[0], image.shape[1], angle, image.ndim)
offset_m = int((abs(new_image_rotated.shape[0] - image.shape[0])))
offset_n = int((abs(new_image_rotated.shape[1] - image.shape[1])))
rotation_matrix = get_rotation_matrix_for_angle(angle)
for i in range(image.shape[0] - 15):
for j in range(image.shape[1] - 15):
new_point = get_new_point([i, j], angle)
new_i = int(new_point[0] + offset_m)
new_j = int(new_point[1] + offset_n)
new_image_rotated[new_i, new_j, :] = image[i, j, :]
return new_image_rotated
def get_new_coordinates(img, angle):
new_coors = {}
for i in range(img.shape[0]):
for j in range(img.shape[1]):
new_coors[(i, j)] = get_new_point([i, j], angle)
return new_coors
def rotate_image_by_angle(image, angle):
im_10 = image
angle = angle
result = get_new_coordinates(im_10, angle)
x_min = min([result[xy][0] for xy in result])
x_max = max([result[xy][0] for xy in result])
y_min = min([result[xy][1] for xy in result])
y_max = max([result[xy][1] for xy in result])
im_11 = get_new_canvas_for_an_image(im_10.shape[0], im_10.shape[1], angle, im_10.ndim)
plt.imshow(im_11)
plt.show()
for x in result:
# x , result[x]
if x_min < 0:
new_i = result[x][0] + abs(x_min)
else:
new_i = result[x][0] + abs(x_min)
if y_min < 0:
new_j = result[x][1] + abs(y_min)
else:
new_j = result[x][1] + abs(y_min)
if 0 < new_i < im_11.shape[0] and 0 < new_j < im_11.shape[1]:
im_11[new_i, new_j, :] = im_10[x[0], x[1], :]
plt.imshow(im_11)
plt.show()
a = 10
return im_11
image = rotate_image_by_angle(get_image(), math.pi/2)
plt.imshow(image)
plt.show()


#Rotation Class
class RotateImage():
import matplotlib.pyplot as plt
def get_an_image_from_file(self,path=u"C:\\Users\\eraya\\Desktop\\JupyterExample", file=u"a_1.png"):
"""
:rtype: object
"""
image_file_1 = path + u"\\" + file
img_1 = self.plt.imread(image_file_1)
# plt.imshow(img_1)
# plt.show()
self.image=img_1
return img_1
myRI=RotateImage()
myRI.get_an_image_from_file()
a=10
#Italic Letter Test
import matplotlib.pyplot as plt
import numpy as np
import math
def get_shear_matrix_for_factor_x(factor_x: int):
shear_m=np.empty((2,2),np.float)
shear_m[0,:] = np.array([1,factor_x])
shear_m[1, :] = np.array([0,1])
return shear_m
def get_rotation_matrix_for_angle(angle: float):
theta = angle
rotation_matrix = np.array([[math.cos(theta), -math.sin(theta)], [math.sin(theta), math.cos(theta)]], np.float)
return rotation_matrix
def get_new_point(point: tuple, angle: float):
"""
:param point: a point in 2D, with coordinates x, y
:param angle: in radians
:return: tuple representing a point with ratoted coordinates
"""
rotation_matrix = get_rotation_matrix_for_angle(angle)
point_vector=np.empty((2,1),float)
point_vector[0,0]=point[0]
point_vector[1,0]=point[1]
new_point = np.matmul(rotation_matrix, point)
x = int(new_point[0])
y = int(new_point[1])
return (x,y)
def display_plot(points):
"""
:param points: np.matrix
"""
point_list_x = points[:, 0] #
point_list_y = points[:, 1] # [
plt.plot(point_list_x, point_list_y)
plt.show()
def get_my_T():
points=np.empty((9,2),np.float)
points[:,0] = np.array([20,25,25,35,35,10,10,20,20])
points[:,1] = np.array([ 0, 0,30,30,35,35,30,30, 0])
return points
def display_three_letters_on_same_plot(p_1: np.matrix , p_2: np.matrix, p_3: np.matrix):
plt.plot(p_1[:,0], p_1[:,1],color="red")
plt.plot(p_2[:, 0], p_2[:, 1], color="yellow")
plt.plot(p_3[:, 0], p_3[:, 1], color="green")
plt.xlim([-100,100])
plt.ylim([-100,100])
plt.show()
def display_two_letters_on_same_plot(p_1: np.matrix , p_2: np.matrix):
plt.plot(p_1[:,0], p_1[:,1],color="red")
plt.plot(p_2[:, 0], p_2[:, 1], color="yellow")
plt.show()
def display_points(points):
plt.plot(points[:,0], points[:,1])
plt.show()
def rotate_a_letter_by_angle(letter:np.matrix,angle:np.float):
m,n=letter.shape
new_points = np.empty((m,n),np.float)
for i in range(m):
new_points[i,:] = get_new_point(letter[i,:],angle)
return new_points
def shear_a_letter_by_factor_x(letter:np.matrix,factor_x:np.int):
m,n=letter.shape
new_letter = np.empty((m,n),np.float)
shear_matrix=get_shear_matrix_for_factor_x(factor_x)
for i in range(m):
new_letter[i,:] = np.matmul(shear_matrix,letter[i,:])
return new_letter
p=get_my_T()
p_1=rotate_a_letter_by_angle(get_my_T(), np.pi/2)
p_2=shear_a_letter_by_factor_x(p,1)
# display_two_letters_on_same_plot(p,p_2)
display_three_letters_on_same_plot(p,p_1,p_2)
# display_points(p_2)
