我正在研究橘子树图像的分割[图 5]。
我正在尝试复制和实验我在 Malik、Zeeshan & Ziauddin、Sheikh & Ahmad、Reyyan & Safi、Asad 上的发现。(2016 年)。用于作物产量估算的树上柑橘类水果的检测和计数。国际高级计算机科学与应用杂志。7. 10.14569/IJACSA.2016.070569。[图片 1 和 2]
我想使用的技术是带有过滤器掩码的图像卷积(在我提到的文章和下面的文章中的字母 B 中进行了描述)。
MALIK (2016) 论文使用 AB Payne、KB Walsh、P. Subedi 和 D. Jarvis 论文中提出的技术,“使用图像分析-分割方法估计芒果作物产量”,农业计算机和电子学,卷. 91,第 57-64 页,2013 年。[图片 3 和 4]
我也尝试应用 NDI 效果,但我的代码出错。我该怎么做才能得到我在两篇论文上找到的结果?
我正在使用 python 3、OpenCV 和 Jupyter Notebooks。首先我尝试计算 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]





