Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Wed May 16 13:44:06 2018
- @author: Olejnik
- """
- #import os
- #import numpy as np
- #import matplotlib.image as img
- #import matplotlib.pyplot as plt
- #from scipy import misc as mc
- #
- #a = np.array([[1,1,1],[2,2,2],[2,3,1]])
- #b = np.array([[1,1,1],[2,2,2],[2,3,2]])
- #
- #c = np.multiply(a,b)
- #print(c)
- # -*- coding: utf-8 -*-
- """
- Created on Sun May 13 21:08:02 2018
- @author: Olejnik
- """
- import os
- import numpy as np
- import matplotlib.image as img
- import matplotlib.pyplot as plt
- from scipy import misc as mc
- os.chdir('C:\Users\olejn\Desktop\WI\Semestr4\Przetwarzanie obrazu\laboratorium\lab3')
- obr=img.imread('lab3.png')
- def fmask(obr, mask):
- #rozmiar maski shape[0] - wiersz, shape[1] - kolumna
- w_mask = mask.shape[0]
- h_mask = mask.shape[1]
- w_obr = obr.shape[0]
- h_obr = obr.shape[1]
- obr2 = obr.copy()
- newobr=np.zeros((h_obr,w_obr))
- norma = np.sum(mask)
- if norma == 0:
- norma = 1
- for x in range (0, w_obr-3):
- for y in range (0, h_obr-3):
- wymnozone = mask * obr2[y:y+h_mask,x:x+w_mask]
- dodane = np.sum(wymnozone)
- piksel = dodane/norma
- newobr[y,x] = piksel
- return newobr
- def ffilter(obr, mask):
- ileMasek = mask.shape[0]
- out = np.zeros(obr.shape)
- for i in range(0, ileMasek):
- out = out + np.abs(fmask(obr.copy(), mask[i, :, :]))
- out = np.abs(out /ileMasek)
- return out
- def wyswietl(obrOrg, obr, title):
- plt.subplot(1,2,1)
- plt.imshow(obrOrg, cmap=plt.cm.gray, vmin=0, vmax=255, aspect='auto')
- plt.title('Oryginal')
- plt.subplot(1,2,2)
- plt.imshow(obr, cmap=plt.cm.gray, vmin=0, vmax=255, aspect='auto')
- plt.title(title)
- plt.show()
- #filtry krawędziowe
- def fRobertsa(obr):
- #mask=np.array([[1,1,1],[1,4,1],[1,1,1]])
- mask=np.zeros((4,2,2))
- mask[0,:,:]=np.array([[-1,0],[1,0]])
- mask[1,:,:]=np.array([[-1,1],[0,0]])
- mask[2,:,:]=np.array([[0,1],[-1,0]])
- mask[3,:,:]=np.array([[1,0],[0,-1]])
- obr2 = ffilter(obr,mask)
- return obr2
- def fLaplacea(obr):
- mask=np.zeros((1,3,3))
- mask[0,:,:]=np.array([[0,1,0],[1,-4,1],[0,1,0]])
- #mask[1,:,:]=np.array([[1,1,1],[1,-8,1],[1,1,1]])
- obr2 = ffilter(obr,mask)
- return obr2
- def fPrewitta(obr):
- mask=np.zeros((4,3,3))
- mask[0,:,:]=np.array([[-1,0,1],[-1,0,1],[-1,0,1]])
- mask[1,:,:]=np.array([[-1,-1,-1],[0,0,0],[1,1,1]])
- mask[2,:,:]=np.array([[0,1,1],[-1,0,1],[-1,-1,0]])
- mask[3,:,:]=np.array([[-1,-1,0],[-1,0,1],[0,1,1]])
- obr2 = ffilter(obr,mask)
- return obr2
- def fSobela(obr):
- mask=np.zeros((4,3,3))
- mask[0,:,:]=np.array([[-1,0,1],[-2,0,2],[-1,0,1]])
- mask[1,:,:]=np.array([[-1,-2,-1],[0,0,0],[1,2,1]])
- mask[2,:,:]=np.array([[0,1,2],[-1,0,1],[-2,-1,0]])
- mask[3,:,:]=np.array([[-2,-1,0],[-1,0,1],[0,1,2]])
- obr2 = ffilter(obr,mask)
- return obr2
- #dokonczyc
- def fKirscha(obr):
- mask=np.zeros((8,3,3))
- mask[0,:,:]=np.array([[-3,-3,5],[-3,0,5],[-3,-3,5]])#
- mask[1,:,:]=np.array([[-3,5,5],[-3,0,5],[-3,-3,-3]])#
- mask[2,:,:]=np.array([[5,5,5],[-3,0,-3],[-3,-3,-3]])#
- mask[3,:,:]=np.array([[5,5,-3],[5,0,-3],[-3,-3,-3]])#
- mask[4,:,:]=np.array([[5,-3,-3],[5,0,-3],[5,-3,-3]])#
- mask[5,:,:]=np.array([[-3,-3,-3],[5,0,-3],[5,5,-3]])#
- mask[6,:,:]=np.array([[-3,-3,-3],[-3,0,-3],[5,5,5]])#
- mask[7,:,:]=np.array([[-3,-3,-3],[-3,0,5],[-3,5,5]])
- obr2 = ffilter(obr,mask)
- return obr2
- #
- obr = mc.imread('lab3.png')[:,:,0]
- plt.title('Oryginal')
- obr2=obr.copy()
- obr2 = fRobertsa(obr)
- wyswietl(obr, obr2, 'Roberts')
- obr2 = fLaplacea(obr)
- wyswietl(obr, obr2, 'Laplace')
- obr2 = fPrewitta(obr)
- wyswietl(obr, obr2, 'Prewitt')
- obr2 = fSobela(obr)
- wyswietl(obr, obr2, 'Soel')
- obr2 = fKirscha(obr)
- wyswietl(obr, obr2, 'Kirsch')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement