Распознавание образов в Python. Часть VII – логика обработки изображения

Предыдущая статья – Распознавание образов в Python. Часть VI — функция обработки изображений.

Идем дальше и завершаем написание функции обработки изображений.

def threshold(imageArray):

    balanceAr = []
    newAr = imageArray
    from statistics import mean
    for eachRow in imageArray:
        for eachPix in eachRow:
            avgNum = mean(eachPix[:3])
            balanceAr.append(avgNum)

    balance = mean(balanceAr)
    for eachRow in newAr:
        for eachPix in eachRow:
            if mean(eachPix[:3]) > balance:
                eachPix[0] = 255
                eachPix[1] = 255
                eachPix[2] = 255
                eachPix[3] = 255
            else:
                eachPix[0] = 0
                eachPix[1] = 0
                eachPix[2] = 0
                eachPix[3] = 255
    return newAr

Сейчас мы тут добавили оценку каждого пикселя. Если пиксель ярче среднего, то он белый. Если он темнее среднего, то он черный.

Таким образом, мы можем передать в эту функцию массив изображения и в качестве результата получить массив черно-белого изображения.

Напомним, что наше первоначальное изображение имело следующий вид:

Теперь передадим его в нашу функцию:

i = Image.open('images/numbers/0.1.png')
iar = np.array(i)
i2 = Image.open('images/numbers/y0.4.png')
iar2 = np.array(i2)
i3 = Image.open('images/numbers/y0.5.png')
iar3 = np.array(i3)
i4 = Image.open('images/sentdex.png')
iar4 = np.array(i4)


iar = threshold(iar)
iar2 = threshold(iar2)
iar3 = threshold(iar3)
iar4 = threshold(iar4)

fig = plt.figure()
ax1 = plt.subplot2grid((8,6),(0,0), rowspan=4, colspan=3)
ax2 = plt.subplot2grid((8,6),(4,0), rowspan=4, colspan=3)
ax3 = plt.subplot2grid((8,6),(0,3), rowspan=4, colspan=3)
ax4 = plt.subplot2grid((8,6),(4,3), rowspan=4, colspan=3)

ax1.imshow(iar)
ax2.imshow(iar2)
ax3.imshow(iar3)
ax4.imshow(iar4)


plt.show()

Результат будет иметь следующий вид:

Супер, все выглядит замечательно. Теперь мы можем нормализовать наши данные, используя пороговые значения. Мы готовы двигаться дальше и начать сохранять шаблоны для распознавания изображений на основе наших выборочных данных.

Следующая статья: Распознавание образов в Python. Часть VIII – сохранение данных для обучения и тестирования.

Перевод статьи “Thresholding Logic”.

1 комментарий к “Распознавание образов в Python. Часть VII – логика обработки изображения”

  1. Пингбэк: Распознавание образов в Python. Часть VIII – сохранение данных для обучения и тестирования - pythonturbo

Комментарии закрыты.