Maskid
Maskid on selleks, et mingi osa pildist kinni katta.
pilt = imageio.imread(kataloog + 'image.jpg')
# seperate the row and column values
total_row , total_col , layers = pilt.shape
''' Create vector.
Ogrid is a compact method of creating a multidimensional
ndarray operations in single lines.
for ex:
>>> ogrid[0:5,0:5]
output: [array([[0],
[1],
[2],
[3],
[4]]),
array([[0, 1, 2, 3, 4]])]
'''
x , y = np.ogrid[:total_row , :total_col]
# get the center values of the image
cen_x , cen_y = total_row/2 , total_col/2
'''
Measure distance value from center to each border pixel.
To make it easy, we can think it's like, we draw a line from center-
to each edge pixel value --> s**2 = (Y-y)**2 + (X-x)**2
'''
distance_from_the_center = np.sqrt((x-cen_x)**2 + (y-cen_y)**2)
radius = (total_row/2) # Arvutame raadiuse
# Using logical operator '>'
# logical operator to do this task which will return as a value
# of True for all the index according to the given condition.
ymmargune_pilt = distance_from_the_center > radius
pilt[ymmargune_pilt] = 0 # maski värv 0-255
#plt.figure(figsize = (5,5))
plt.imshow(pilt)
plt.show()

Filtreerimine
Näiteks filtreerime välja pikslid mille väärtus on suurem, kui 200. Ja värvime need mustaks (anname väärtuse 0).
pilt = imageio.imread(kataloog +'image.jpg')
valitud_pikslid = pilt > 200 #
pilt[valitud_pikslid] = 0 # uue väärtuse andmine
plt.imshow(pilt)
plt.show()

Maskide ja filtreerimise näide
nimi = 'katsekeha1.jpg'
pilt = imageio.imread(kataloog + nimi)
plt.title('Originaal pilt')
plt.imshow(pilt)
plt.show()

Kuva ainult punased pikslid mille väärtus on väiksem, kui 235:
pilt = imageio.imread(kataloog + nimi)
red_mask = pilt[:, :, 0] > 235
pilt[red_mask] = 0 # Maski toon: 0 must, 255 valge
plt.imshow(pilt)

Ainult rohelised pikslid mille väärtus väiksem, kui 220:
pilt = imageio.imread(kataloog + nimi)
green_mask = pilt[:, :, 1] > 225
pilt[green_mask] = 0 # Maski toon: 0 must, 255 valge
plt.imshow(pilt)

Ainult sinised pikslid, mille väärtus väiksem, kui 200:
pilt = imageio.imread(kataloog + nimi)
blue_mask = pilt[:, :, 2] > 210
pilt[blue_mask] = 0
plt.imshow(pilt)

Pilt, kus on kõik kolm maski ühendatud:
pilt = imageio.imread(kataloog + nimi)
final_mask = np.logical_and(red_mask, green_mask, blue_mask)
pilt[final_mask] = 0 # Maski toon: 0 must, 255 valge
plt.imshow(pilt)

Histogram
Histogrammi saame kasutada, et näidada mingi värvitooni esinemissagedust pildil.
- Histogram näitab värvitooni intensiivsuse jaotumist pildil.
- Histogram näitab, kui palju mingi intensiivsusega piksleid on.
import cv2
import numpy as np
from matplotlib import pyplot as plt
kataloog = 'https://raw.githubusercontent.com/taunoe/jupyter-notebooks/main/Pildi-anal%C3%BC%C3%BCs/images/'
hall_img = imageio.imread(kataloog + 'image_hall.jpg')
hist,bins = np.histogram(hall_img, 256,[0,256])
plt.hist(hall_img.ravel(),256,[0,256])
plt.title('Hall toonides pildi histogramm')
plt.ylabel('Pikslite hulk')
plt.xlabel('Värvi väärtus')
plt.show()

Värvilise pildi RGB toonide histogram:
img = imageio.imread(kataloog + 'image.jpg')
plt.imshow(img)
plt.show()
color = ('b','g','r')
for channel,col in enumerate(color):
histr = cv2.calcHist([img],[channel],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.title('RGB histogramm')
plt.ylabel('Pikslite hulk')
plt.xlabel('Värvi väärtus')
plt.show()

1 Comment