数字图像处理之超像素图像分割

算法实现是我的毕设,在补充了一下基础知识后,今天开始进行算法的编码,参考网上相关文章,太多了,不列了

相关基础知识主要如下:

  1. 冈萨雷斯的数字图像处理中的图像分割
  2. 周志华的机器学习中的聚类
  3. python相关:skimage、jupyter(IDE)[科学计算库不列了~]
  4. 相关论文:谷歌上有,就是SLIC的,我已经打算毕设直接致敬人家~~

实现思路:

  1. 均匀播撒K个种子到图像的lab ndarray中(lab包含明度)
  2. 调整种子位子到梯度较小的周围像素处
  3. 初始化数组,确定像素的中心点及其距离
  4. 对种子周围2s内像素计算五维距离,此距离为欧式距离,更新中心点和距离
  5. update种子位子
  6. 重复4,5直到稳定

未完成编码如下:

K = 30
rgb = io.imread("D:\zhang.jpg")
image_data = color.rgb2lab(rgb)
image_height = image_data.shape[0]
image_width = image_data.shape[1]
N = image_height*image_width
S = int(math.sqrt(N/K))

clusters = []
label = {}
dis = np.full((image_height,image_width), np.inf)

init_clusters##初始化种子
move_clusters##将种子移到梯度较低的位置,排除噪声干扰
##for ck in clusters:
##    for i in 2s compute Di:
##        if Di < label[i]:
##            label[i]=ck
##update clusters
##save lab2rbg
            

未完成点:

  1. 自己先实现完
  2. 整理代码格式
  3. 收敛速度
  4. 欧式距离的维度权重竟然都一样

你可能感兴趣的:(Python语言学习)