Я занимаюсь исследованием сегментации изображения апельсинового дерева [Изображение 5].
Я пытаюсь воспроизвести и экспериментировать с Маликом, Зеешаном и Зиауддином, Шейхом и Ахмадом, Рейяном и Сафи, Асадом. (2016). Обнаружение и подсчет цитрусовых на деревьях для оценки урожайности. Международный журнал передовых компьютерных наук и приложений. 7. 10.14569 / IJACSA.2016.070569. [Изображения 1 и 2]
Техника, которую я хочу использовать, - свертка изображения с маской фильтра (описана в статье, о которой я упоминал, и в статье ниже, на букве B).
В статье MALIK (2016) используется метод, представленный в статье А. Б. Пейн, К. Б. Уолш, П. Субеди и Д. Джарвис, «Оценка урожайности манго с использованием метода анализа изображений - сегментация», «Компьютеры и электроника в Сельское хозяйство, вып. 91, с. 57–64, 2013. [Изображения 3 и 4]
Я также пытался применить эффект NDI, но получил ошибку с моим кодом. Что я могу сделать, чтобы получить результат, который я нашел на двух бумагах?
Я работаю с ноутбуками Python 3, OpenCV и Jupyter. Сначала я попытался вычислить NDI:
NDI = np.ones(np.shape(fruta), dtype= 'float64')
for i in range (len(fruta)):
for j in range (len(fruta[i])):
if (fruta[i,j,1] + fruta[i,j,2]) == 0:
NDI[i,j,0] = 0
else:
NDI[i,j,0] = int( int(int(fruta[i,j,1]) - int(fruta[i,j,2]) ) / int(int(fruta[i,j,1]) + int(fruta[i,j,2]) ) )
Я получил эту ошибку:
C:\Users\pili_\Anaconda3\envs\python-cvcourse\lib\site-packages\ipykernel_launcher.py:4: RuntimeWarning: overflow encountered in ubyte_scalars after removing the cwd from sys.path.
Это похоже на ошибку с форматом изображения или чем-то еще.
Я также пытался использовать эффект (свертка с фильтром), который хочу реализовать, но результат неудовлетворительный, я не знаю, правильно ли я его применил (я применил его без применения NDI первым, это проблема?) :
frutaNovo = np.ones(np.shape(fruta), dtype= np.uint8)
frutaRGB = np.ones(np.shape(fruta), dtype = np.uint8)
kernel = np.ones((3,3),np.float32)/9
frutaRGB = cv2.filter2D(frutaLab, -1, kernel)
for i in range(len(frutaLab)):
for j in range(len(frutaLab[i])):
soma = (int(frutaRGB[i,j,0]) + int(frutaRGB[i,j,1]) + int(frutaRGB[i,j,2]))
if soma == 0:
frutaNovo[i,j] = 0
else:
frutaNovo[i,j] = soma/3
ret, frutaNovo = cv2.threshold(frutaNovo,150,255,cv2.THRESH_BINARY)
displaygray(frutaNovo)
Малик бумага: [Изображение 1]
Малик результаты: [Изображение 2]
Бумага Пейна: [изображение 3]
Результаты Пейна: [изображение 4]
Исходное изображение: [изображение 5]
Мой результат: [изображение 6]