import { Image } from "../../Image"
/**
 * Image
 * @class gve.Algorithms.Image.Segmentation
 * @since gve.Algorithms.Image
 * @alias gve.Algorithms.Image.Segmentation
 */
export class Segmentation{

    /**
     * 为聚类选择种子像素
     * @param {Number} [size] 种子大小
     * @param {String} [gridType] 网格类型(square|hex)
     * @returns Image
     * @tutorial gve.Algorithms.Image.Segmentation
     * @alias gve.Algorithms.Image.Segmentation.seedGrid
     */
    static seedGrid(size?:number, gridType?:string){
        return new Image();
    }
    /**
     * 基于 SNIC(简单非迭代聚类)的超像素聚类
     * @param {Image} image 聚类的影像
     * @param {Number} [size] 种子的大小
     * @param {Number} [compactness] 紧凑型因子
     * @param {Number} [connectivity] 连接性
     * @param {Number} [neighborhoodSize] 邻域大小
     * @param {Image} [seeds] 用于连接性的影像
     * @returns Image
     * @tutorial gve.Algorithms.Image.Segmentation
     * @alias gve.Algorithms.Image.Segmentation.SNIC
     */
    static SNIC(image:Image, size?:number, compactness?:number, connectivity?:number, neighborhoodSize?:number, seeds?:Image){
        return new Image();
    }

    /**
     * 对输入图像进行 K-Means 聚类
     * @param {Image} image 待聚类的影像
     * @param {Number} [numClusters] 聚类的数目
     * @param {Number} [numIterations] 迭代次数
     * @param {Number} [neighborhoodSize] 邻域大小
     * @param {Number} [gridSize] 网格单元大小
     * @param {Boolean} [forceConvergence] 未达到收敛状态是否强制抛错
     * @param {Boolean} [uniqueLabels] 是否分配唯一标签
     * @returns Image
     * @tutorial gve.Algorithms.Image.Segmentation
     * @alias gve.Algorithms.Image.Segmentation.KMeans
     */
    static KMeans(image:Image, numClusters?:number, numIterations?:number, neighborhoodSize?:number, gridSize?:number, forceConvergence?:boolean, uniqueLabels?:boolean){
        return new Image();
    }
}