Şu anda Bradley Adaptive Thresholding
adlı bir eşikleme algoritması uygulamak için çalışıyorum.Bradley uyarlamalı eşikleme algoritması
Bu algoritmayı nasıl uygulayacağımı öğrenmek için başlıca iki bağlantıyı takip ediyorum. Ayrıca, diğer iki eşikleme algoritmasını, özellikle, Otsu's Method ve Balanced Histogram Thresholding'u başarıyla uygulayabildim.
Bradley Adaptive Thresholding
algoritmasını oluşturmak için takip ettiğim iki bağlantı. Ben algoritması çalışan ve görüntüyü tasarruf yaşıyorum İşte burada
Bradley Adaptive Thresholding Github Example
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf
Python
benim kaynak kodunun bölümdür. Ne yapmak istediğimi gerçekleştirmek için
Python Imaging Library
ve başka hiçbir araç kullanıyorum. İşte
def get_bradley_binary(inp_im):
w, h = inp_im.size
s, t = (w/8, 0.15)
int_im = Image.new('L', (w, h))
out_im = Image.new('L', (w, h))
for i in range(w):
summ = 0
for j in range(h):
index = j * w + i
summ += get_pixel_offs(inp_im, index)
if i == 0:
set_pixel_offs(int_im, index, summ)
else:
temp = get_pixel_offs(int_im, index - 1) + summ
set_pixel_offs(int_im, index, temp)
for i in range(w):
for j in range(h):
index = j * w + i
x1,x2,y1,y2 = (i-s/2, i+s/2, j-s/2, j+s/2)
x1 = 0 if x1 < 0 else x1
x2 = w - 1 if x2 >= w else x2
y1 = 0 if y1 < 0 else y1
y2 = h - 1 if y2 >= h else y2
count = (x2 - x1) * (y2 - y1)
a1 = get_pixel_offs(int_im, y2 * w + x2)
a2 = get_pixel_offs(int_im, y1 * w + x2)
a3 = get_pixel_offs(int_im, y2 * w + x1)
a4 = get_pixel_offs(int_im, y1 * w + x1)
summ = a1 - a2 - a3 + a4
temp = get_pixel_offs(inp_im, index)
if temp * count < summ * (1.0 - t):
set_pixel_offs(out_im, index, 0)
else:
set_pixel_offs(out_im, index, 255)
return out_im
bu setin uygulanmasını göstermektedir ve daha önce görmedim yöntemleri olsun benim kod bölümüdür.
def get_offs(image, x, y):
return y * image.size[0] + x
def get_xy(image, offs):
return (offs % image.size[0], int(offs/image.size[0]))
def set_pixel_xy(image, x, y, data):
image.load()[x, y] = data
def set_pixel_offs(image, offs, data):
x, y = get_xy(image, offs)
image.load()[x, y] = data
def get_pixel_offs(image, offs):
return image.getdata()[offs]
def get_pixel_xy(image, x, y):
return image.getdata()[get_offs(image, x, y)]
Son olarak, giriş ve çıkış görüntüleri. Bunlar, size sağladığım ilk bağlantıdaki orijinal araştırma makalesinde kullanılanla aynı görüntülerdir. Not: Çıktı görüntüsü neredeyse tamamen beyazdır ve görmesi zor olabilir, ancak birisinin gerçekten referans almak istemesi durumunda bunu sağladım.
, uygun çıkış görüntü nesil çalışmıyor Ne: Ben size çeviri için kullanılan Github aynı C örneği kullanılır? Görsel olmayan testleriniz var mı? – Ashalynd
Evet, doğru çıktı görüntü üretimi çalışmıyor, araştırma kağıdının test için kullandığı aynı görüntüyü kullandım ve çıktı görüntüsü tamamen beyaz ve araştırma kağıdının çıktı görüntüsünün yaptığı gibi görünmüyor.Görsel olmayan testler için, ne demek istediğinden emin değilim. –