算法实现是我的毕设,在补充了一下基础知识后,今天开始进行算法的编码,参考网上相关文章,太多了,不列了
相关基础知识主要如下:
- 冈萨雷斯的数字图像处理中的图像分割
- 周志华的机器学习中的聚类
- python相关:skimage、jupyter(IDE)[科学计算库不列了~]
- 相关论文:谷歌上有,就是SLIC的,我已经打算毕设直接致敬人家~~
实现思路:
- 均匀播撒K个种子到图像的lab ndarray中(lab包含明度)
- 调整种子位子到梯度较小的周围像素处
- 初始化数组,确定像素的中心点及其距离
- 对种子周围2s内像素计算五维距离,此距离为欧式距离,更新中心点和距离
- update种子位子
- 重复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
未完成点:
- 自己先实现完
- 整理代码格式
- 收敛速度
- 欧式距离的维度权重竟然都一样