资源简介

一篇15年文章的复原,先用kmeans均匀分块,然后高斯映射,然后meanshift精简。其中meanshift是固定阈值的,没加核函数。

资源截图

代码片段和文件信息

function [data2clusternumClust] = mymeanshift1(dataPtsbandWidth)
% 经典无核漂移聚类算法
%perform MeanShift Clustering of data using a flat kernel
%
% ---INPUT---
% dataPts           - input data (numDim x numPts)
% bandWidth         - is bandwidth parameter (scalar)
% plotFlag          - display output if 2 or 3 D    (logical)
% ---OUTPUT---
% clustCent         - is locations of cluster centers (numDim x numClust)
% data2cluster      - for every data point which cluster it belongs to (numPts)
% cluster2dataCell  - for every cluster which points are in it (numClust)

% Bryan Feldman 02/24/06
% MeanShift first appears in
% K. Funkunaga and L.D. Hosteler “The Estimation of the Gradient of a
% Density Function with Applications in Pattern Recognition“


%*** Check input ****
if nargin < 2
    error(‘输入参数不足‘);
end


[numDimnumPts] = size(dataPts);%[维度,点数][行数,列数]
% 初始化
numInitPts = numPts; %初始化的未聚类点数
Initidx = 1:numPts; %初始化的未聚类点索引
clusterVotes = zeros(100numPts‘uint16‘); %初始化的簇投票
beenVisitedFlag = zeros(1numPts‘uint8‘); %判断循环中止条件
numClust = 0; %初始化的簇总数
clustCent = zeros(numDim100); %初始化的簇中心
while numInitPts
    tempInd = ceil( (numInitPts-1e-6)*rand); %选择随机种子点,作为初始聚类中心 %此处可用均匀初值优化
    stInd = Initidx(tempInd); %该点在原始数据中的索引
    myMean = dataPts(:stInd); %该点坐标
    stopThresh = 1e-3*bandWidth; %迭代中止的阀值
    thisClusterVotes = zeros(1numPts‘uint16‘); %各点对该簇的投票统计
    while 1
        %计算均值漂移向量
        inInds = sum((repmat(myMean1numPts) - dataPts).^2) < bandWidth.^2; %内点的逻辑索引 %此处可由k-d tree加速
        thisClusterVotes(inInds) = thisClusterVotes(inInds)+1; %各内点为该簇增加一个投票
        myOldMean = myMean;
        myMean  = mean(dataPts(:inInds)2); %计算新的聚类中心坐标
        beenVisitedFlag(inInds) = 1; %标记点云中各点的查询情况
        if norm(myMean-myOldMean) < stopThresh %循环中止条件
            mergeWith = 0; %初始化合并簇的参数
            for cN = 1:numClust
                distToOther = norm(myMean-clustCent(:cN)); %与其它簇中心的距离
                if distToOther < bandWidth/2
                    mergeWith = cN;
                    break
                end
            end
            if mergeWith > 0
                clustCent(:mergeWith) = 0.5*(myMean+clustCent(:mergeWith)); %最终的clustCent会重新计算所以
                clusterVotes(mergeWith:) = clusterVotes(mergeWith:) + thisClusterVotes;
            else
                numClust = numClust+1;
                clustCent(:numClust) = myMean;
                clusterVotes(numClust:) = thisClusterVotes;
            end
            break
        end
    end
    Initidx = find(beenVisitedFlag == 0);
    numInitPts = length(Initidx);
end
if numClust<100
    clusterVotes(numClust+1:end:) = [];
end
[~data2cluster] = max(clusterVotes[]1);

end

















 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-04-09 11:43  点云精简_高斯球\
     目录           0  2018-04-09 11:43  点云精简_高斯球\bunny\
     文件     1988159  2012-12-01 22:35  点云精简_高斯球\bunny\bun000.ply
     文件     1965799  2012-12-01 22:35  点云精简_高斯球\bunny\bun045.ply
     文件     1651508  2012-12-01 22:35  点云精简_高斯球\bunny\bun090.ply
     文件     1983009  2012-12-01 22:35  点云精简_高斯球\bunny\bun180.ply
     文件     1679880  2012-12-01 22:35  点云精简_高斯球\bunny\bun270.ply
     文件     1808074  2012-12-01 22:35  点云精简_高斯球\bunny\bun315.ply
     文件     3033195  1996-08-05 08:00  点云精简_高斯球\bunny\bun_zipper.ply
     文件      658744  1996-08-05 08:00  点云精简_高斯球\bunny\bun_zipper_res2.ply
     文件      148524  1996-08-05 08:01  点云精简_高斯球\bunny\bun_zipper_res3.ply
     文件       34359  1996-08-05 08:01  点云精简_高斯球\bunny\bun_zipper_res4.ply
     文件     1861310  2012-12-01 22:35  点云精简_高斯球\bunny\chin.ply
     文件     1686708  2012-12-01 22:35  点云精简_高斯球\bunny\ear_back.ply
     文件     1898128  2012-12-01 22:35  点云精简_高斯球\bunny\top2.ply
     文件     1833305  2012-12-01 22:35  点云精简_高斯球\bunny\top3.ply
     文件        3022  2017-03-21 15:19  点云精简_高斯球\mymeanshift1.m
     文件        1194  2018-04-03 18:57  点云精简_高斯球\norcur.m
     文件       16255  2016-04-05 16:14  点云精简_高斯球\ply_read.m
     文件        1647  2018-04-09 11:01  点云精简_高斯球\test_myjingjian.m

评论

共有 条评论