人像晶格化-超像素预分割+块内均值
一、晶格化效果
使用超像素分割算法SLIC进行聚类,在每个类中进行均值化。
项目地址:https://github.com/wchstrife/DigitalImageProcessing
1.1 运行环境
- python 3.7
- skimage
- tqdm
- numpy
1.2 运行
cd SLIC-Superpixelspython slic.py
1.3 算法原理
SLIC算法采用了K-means的算法思想,对于像素进行聚类,同时为了降低算法复杂度,只考虑某一区域进行聚类。在考量距离时,同时考虑LAB颜色空间和XY距离空间。
算法的输入只有一个参数K,代表要分割K个像素,假设原来图像有N个像素,则每个超像素大小为N/K,超像素的边长为 S = N / K S=\sqrt{N/K} S=N/K。
首先将K个聚类的中心均匀的分布在图像上,然后调整聚类中心的位置:放在K为中心3*3的区域内梯度最小的点上,这样可以防止超像素中心落在噪点和边界上。
用一个label数组记录像素点属于哪个聚类,dist数组记录到像素中心的距离。
对于聚类中心X,计算周围2S范围内的点,使用公式更新dist数组中的最小距离,并且更新其属于哪个聚类。距离公式如下:
d c = ( l j − l i ) 2 d_c = \sqrt{(l_j - l_i)^2} dc=(lj


2026

被折叠的 条评论
为什么被折叠?



