🎴
Görüntü İşlemleri
Python ile görüntü işlemleri, histogram algoritmaları

🔂 Resmi np.array Yapmak

1
# OpenCV ile alırsak resim numpy formatında olur
2
import cv2
3
im = cv2.imread("abc.tiff",mode='RGB')
4
print type(im)
Copied!

📊 Histogram Germe İşlemi

1
def histogram_stretching(image: Image, new=(0, 255)):
2
"""Histogram Germe
3
4
Arguments:
5
image {PIL.Image} -- Resim
6
7
Keyword Arguments:
8
new {(min, max)} -- tuple (default: {(0, 255)})
9
10
Returns:
11
PIL.Image -- Gerilmiş resim
12
"""
13
14
def difference(variable: tuple):
15
return variable[1] - variable[0]
16
17
np_image = np.array(image) # Resmi numpy.ndarray formatına çevirme
18
flatten_img_np = np_image.reshape(-1) # Resmi tek boyuta indirgeme
19
20
# Histogram germe denklemi
21
old = flatten_img_np.min(), flatten_img_np.max()
22
for i in range(0, len(flatten_img_np)):
23
flatten_img_np[i] = (difference(new) / difference(old)) * \
24
(flatten_img_np[i] - old[0]) + new[0]
25
26
# Aynı boyutlardaki yeni resmi oluşturma
27
return Image.fromarray(flatten_img_np.reshape(np_image.shape))
Copied!

📊 Histogram Eşitleme

1
def histogram_equalization(image: Image):
2
"""Histogram eşitleme
3
4
Arguments:
5
image {PIL.Image} -- Resim
6
7
Returns:
8
PIL.Image -- Resim
9
"""
10
11
np_image = np.copy(image) # Numpy formatına çevirme
12
flatten_image = np_image.flatten() # Resmi tek boyuta indirgeme
13
14
# Pixel bilgilerini alma
15
pixel_num = len(flatten_image)
16
max_pixel_num = flatten_image.max()
17
min_pixel_num = flatten_image.min()
18
19
# Pixel dağılımını hesaplama
20
pixel_manager = {} # Pixel yönlendirici
21
cumulative_probability = 0 # Kümülatif pixel bulunma olasılığı
22
for i in range(min_pixel_num, max_pixel_num + 1):
23
pixel_count = 0 # Pixel'in tekrar etme sayısı
24
for pixel in flatten_image:
25
if i == pixel:
26
pixel_count += 1
27
cumulative_probability += pixel_count / pixel_num
28
pixel_manager[f'{i}'] = round(
29
max_pixel_num * cumulative_probability
30
)
31
32
for i in range(len(flatten_image)):
33
flatten_image[i] = pixel_manager[f"{flatten_image[i]}"]
34
35
return Image.fromarray(flatten_image.reshape(np_image.shape))
Copied!

🔗 Diğer Bağlantılar

Last modified 1yr ago