Arkadaslar merhaba elimde bir fotograf var, bir kagidin fotografi. Yazilar okunabiliyor, ama net degil. Bunu netlestirecek python algoritmasi ya da websitesi var midir? Tesekkurler simdiden
Netleştirmek derken bulanıklığı mı gidermek istiyorsunuz yoksa düşük çözünürlükten kaynaklanan sıkıntıyı mı gidermek istiyorsunuz?
bulanıklık giderme. Elimdeki fotoğraf bir belge ve bazı yazılar okunabiliniyor ama bulanık. Onları netleştirmek istiyorum.
Belki çok işinize yaramaz ama, aradaki ton farklılıklarını artırarak* yazının okunurluğunu artırabilen bir şeyler kodlayabildim.
Before/After şu şekildedir:
İşleyişi şu şekilde, cv2 ile fotoğrafı/Resimi açıyoruz. Her bir pikselin RGB değerini (Aslında BGR) alıyoruz. Sonrasında görseli siyah beyaza çeviriyoruz. En sonda ise BGR değerlerinin her biri 125’e eşit veya 125’ten küçük olan pikselleri tamamen (0, 0, 0)'a yani tamamen siyaha eşitliyoruz. 125 değerini kendi görsellerinize göre değiştirebilirsiniz.
import cv2
class Image:
def __init__(self, image):
self.image_name = image
self.image = cv2.imread(image)
self.height, self.width = (self.image.shape[0], self.image.shape[1])
self.default_sizes = self.height, self.width
def update_size(self):
self.height, self.width = (self.image.shape[0], self.image.shape[1])
def return_to_default(self):
self.image = cv2.imread(self.image_name)
self.height, self.width = self.default_sizes
def resize(self, scale_percent):
self.width = int(self.width * scale_percent / 100)
self.height = int(self.height * scale_percent / 100)
self.image = cv2.resize(self.image, (self.width, self.height))
def show(self, title):
cv2.imshow(title, self.image)
cv2.waitKey(0)
def convert_to_grayscale(self):
for y in range(self.height):
for x in range(self.width):
b, g, r = self.image[y, x]
s = sum((b, g, r)) // 3
b, g, r = s, s, s
self.image[y, x] = b, g, r
def save(self, title):
cv2.imwrite(title, self.image)
def netlestir(self):
for y in range(self.height):
for x in range(self.width):
try:
b, g, r = self.image[y, x]
if b <= 125 and g <= 125 and r <= 125:
self.image[y, x] = (0, 0, 0)
except IndexError:
continue
img = Image("before.jpg")
img.show("sayfa")
img.convert_to_grayscale()
img.show("siyahbeyaz")
img.netlestir()
img.show("netlestirilmis")
img.save("after.jpg")
İşlem esnasında kullanılmayan bazı fonksiyonlar var, oralara takılmayın.
Merhaba, yanlış bilmiyorsam yaptığınız işlem, thresholding olarak geçiyor. Yanılmıyorum değil mi?
https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html
Açıkçası işlemin adı hakkında herhangi bir bilgim yok. Yazı okunurluğunu nasıl artırırım diye düşünürken böyle bir yöntem aklıma geldi
deneme fırsatım yok şu anda ama bir soru sormak istiyorum,
Burada resmi siyah beyaz yapınca yanılmıyorsam b,g r pikselleri yerine tek piksel oluyor diye biliyorum, yani b, g,r değerlerinin birini kontrol etmek yerine hepsini kontrol etmek gereksiz geliyor bana, bu arada müsait bir zamanda kodunuzu da deneyeceğim, o zaman daha iyi anlarım bu durumu sanırım.
Bu arada tebrik ederim ellerine sağlık, düşünceni sevdim