最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中學(xué)習(xí)K-Means和圖片壓縮

 更新時(shí)間:2017年11月20日 11:31:22   投稿:laozhang  
大家在python中會(huì)遇到關(guān)于K-Means和圖片壓縮的問題,我先通過本次文章學(xué)習(xí)一下基本原理吧。

大家在學(xué)習(xí)python中,經(jīng)常會(huì)使用到K-Means和圖片壓縮的,我們?cè)诖私o大家分享一下K-Means和圖片壓縮的方法和原理,喜歡的朋友收藏一下吧。

通俗的介紹這種壓縮方式,就是將原來很多的顏色用少量的顏色去表示,這樣就可以減小圖片大小了。下面首先我先介紹下K-Means,當(dāng)你了解了K-Means那么你也很容易的可以去理解圖片壓縮了,最后附上圖片壓縮的核心代碼。

K-Means的核心思想

k-means的核心算法也就上面寥寥幾句,下面將分三個(gè)部分來講解:初始化簇中心、簇分配、簇中心移動(dòng)。

初始化簇中心

隨機(jī)取簇中心若是不幸,會(huì)出現(xiàn)局部最優(yōu)的情況;想要打破這種情況,需要多次取值計(jì)算來解決這種情況。

代價(jià)函數(shù)

代碼實(shí)現(xiàn)

J = zeros(100,1);
M = size(X,1);
min = inf;
for i = 1:100
%隨機(jī)取k個(gè)樣本點(diǎn)作為簇中心
randidx = randperm(M);
initial_centroids = X(randidx(1:K),:);
%將所得的中心點(diǎn)進(jìn)行訓(xùn)練
[centroids0, idx] = runkMeans(X, initial_centroids,10);
for k = 1:M 
J(i) = J(i) + sum((X(k,:) - centroids0(idx(M),:)).^2); 
end
%取最小代價(jià)為樣本中心點(diǎn)
if(min > J(i))
centroids =centroids0;
end
end

簇分配

將樣本點(diǎn)分配到離它最近的簇中心下

tmp = zeros(K,1);
for i = 1:size(X,1)
for j = 1:K
tmp(j) = sum((X(i,:) - centroids(j,:)).^2);
end
[mins,index]=min(tmp);
idx(i) = index;
end

簇中心移動(dòng)

取當(dāng)前簇中心下所有樣本點(diǎn)的均值為下一個(gè)簇中心

for i = 1:m
centroids(idx(i),:) = centroids(idx(i),:) + X(i,:);
end

for j = 1:K
centroids(j,:) = centroids(j,:)/sum(idx == j);
end

圖片壓縮

% 加載圖片
A = double(imread('dragonfly.jpg'));
% 特征縮減
A = A / 255; 
img_size = size(A);
X = reshape(A, img_size(1) * img_size(2), 3);
K = 16; 
max_iters = 10;

%開始訓(xùn)練模型
initial_centroids = kMeansInitCentroids(X, K);
[centroids, idx] = runkMeans(X, initial_centroids, max_iters);

%開始?jí)嚎s圖片
idx = findClosestCentroids(X, centroids);
X_recovered = centroids(idx,:);
X_recovered = reshape(X_recovered, img_size(1), img_size(2), 3);
%輸出所壓縮的圖片
subplot(1, 2, 2);
imagesc(X_recovered)

相關(guān)文章

最新評(píng)論

博白县| 阿巴嘎旗| 荆州市| 鱼台县| 潜江市| 广宗县| 云和县| 民和| 普陀区| 五指山市| 苏尼特右旗| 泾川县| 咸宁市| 天柱县| 安乡县| 伊金霍洛旗| 全南县| 庆安县| 河西区| 嘉义市| 南投县| 北辰区| 万山特区| 蒙城县| 正蓝旗| 城步| 武山县| 盐山县| 搜索| 咸丰县| 马边| 顺昌县| 石楼县| 洛川县| 樟树市| 秦皇岛市| 南雄市| 水城县| 鸡泽县| 新兴县| 弥渡县|