国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

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

2020-02-16 10:47:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

K-Means的核心思想

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

初始化簇中心

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

代價(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;endend

簇分配

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

tmp = zeros(K,1);for i = 1:size(X,1)for j = 1:Ktmp(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:mcentroids(idx(i),:) = centroids(idx(i),:) + X(i,:);endfor j = 1:Kcentroids(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;%開(kāi)始訓(xùn)練模型initial_centroids = kMeansInitCentroids(X, K);[centroids, idx] = runkMeans(X, initial_centroids, max_iters);%開(kāi)始?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)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁国市| 南宫市| 铜川市| 买车| 和静县| 安乡县| 兰坪| 天镇县| 弋阳县| 夏津县| 永康市| 义乌市| 马公市| 西林县| 革吉县| 福清市| 罗甸县| 万源市| 宁安市| 油尖旺区| 余庆县| 南康市| 玉溪市| 连南| 南城县| 芜湖县| 广宁县| 巩留县| 桦甸市| 河南省| 罗甸县| 渝北区| 陕西省| 永城市| 黄梅县| 全南县| 永善县| 闻喜县| 肥东县| 卓尼县| 蓝山县|