欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中學習K-Means和圖片壓縮

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

大家在學習python中,經(jīng)常會使用到K-Means和圖片壓縮的,我們在此給大家分享一下K-Means和圖片壓縮的方法和原理,喜歡的朋友收藏一下吧。

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

K-Means的核心思想

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

初始化簇中心

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

代價函數(shù)

代碼實現(xiàn)

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

簇分配

將樣本點分配到離它最近的簇中心下

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

簇中心移動

取當前簇中心下所有樣本點的均值為下一個簇中心

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;

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

%開始壓縮圖片
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)文章

  • Python實現(xiàn)把utf-8格式的文件轉(zhuǎn)換成gbk格式的文件

    Python實現(xiàn)把utf-8格式的文件轉(zhuǎn)換成gbk格式的文件

    這篇文章主要介紹了Python實現(xiàn)把utf-8格式的文件轉(zhuǎn)換成gbk格式的文件,本文給出了實現(xiàn)代碼并同時剖析了代碼的作用,需要的朋友可以參考下
    2015-01-01
  • Python反射的用法實例分析

    Python反射的用法實例分析

    這篇文章主要介紹了Python反射的用法,結(jié)合實例形式分析了Python反射機制所涉及的幾個常用方法與相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • python+django+selenium搭建簡易自動化測試

    python+django+selenium搭建簡易自動化測試

    這篇文章主要介紹了python+django+selenium搭建簡易自動化測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 一個基于flask的web應(yīng)用誕生 組織結(jié)構(gòu)調(diào)整(7)

    一個基于flask的web應(yīng)用誕生 組織結(jié)構(gòu)調(diào)整(7)

    一個基于flask的web應(yīng)用誕生第七篇,這篇文章主要介紹了組織結(jié)構(gòu)的調(diào)整,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Blender Python編程實現(xiàn)程序化建模生成超形示例詳解

    Blender Python編程實現(xiàn)程序化建模生成超形示例詳解

    這篇文章主要為大家介紹了Blender Python編程實現(xiàn)程序化建模生成超形示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Python利用Pillow處理圖像的實踐指南

    Python利用Pillow處理圖像的實踐指南

    Pillow,是Python?Imaging?Library?(PIL)的一個分支,用于處理圖像,這篇文中主要來和大家詳細講講Pillow處理圖像的具體方法,感興趣的小伙伴可以了解一下
    2023-05-05
  • python繪制鉛球的運行軌跡代碼分享

    python繪制鉛球的運行軌跡代碼分享

    這篇文章主要介紹了python繪制鉛球的運行軌跡代碼分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Python 多線程處理任務(wù)實例

    Python 多線程處理任務(wù)實例

    這篇文章主要介紹了Python 多線程處理任務(wù),下面文章利用一個真實實例圍繞Python 多線程處理任務(wù)的相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Python讀寫二進制文件的示例詳解

    Python讀寫二進制文件的示例詳解

    在Python編程中,我們經(jīng)常需要處理各種類型的文件,其中包括二進制文件,本文將詳細介紹如何使用Python讀寫二進制文件,并提供一些實際應(yīng)用的示例,希望對大家有所幫助
    2024-01-01
  • python文件處理詳解

    python文件處理詳解

    這篇文章主要介紹了Python 處理文件的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10

最新評論