k-means算法另類應(yīng)用:壓縮圖片

不看廣告,直接看“療效”:

網(wǎng)絡(luò)上下載的圖片,圖片中有大面積色塊的還是有壓縮空間:


保留原圖片中64種顏色。壓縮率:66%,也就是節(jié)省了1/3的存儲(chǔ)空間

對(duì)于網(wǎng)絡(luò)上色彩斑斕的圖片噩斟。壓縮率有可能不降反增。



其實(shí)很多網(wǎng)站的圖片已經(jīng)優(yōu)化壓縮了孤个,能再壓縮的空間很小剃允。

自己拍攝的圖片,即使保留更多的顏色也能獲得較大壓縮比:


壓縮率:33%

原理:

  • 保留少數(shù)量的顏色齐鲤,取代原圖片中的N多顏色
  • 采用聚類方式得到新的顏色種類斥废,用種類中心的顏色代表這個(gè)顏色種類
  • 用選出來(lái)的顏色重新對(duì)圖片著色

代碼在此:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import imageio

iname = "original.jpg"
cname = "compress_" + iname

#保留的顏色數(shù)量
n_colors = 64
img = imageio.imread(iname)


ax = plt.axes(xticks=[], yticks=[])
ax.imshow(img);


img.shape


data = img / 255.0 # 顏色從0-255轉(zhuǎn)換為0-1之間的小數(shù)
data = data.reshape(-1, 3)
data.shape

#批量KMeans
from sklearn.cluster import MiniBatchKMeans
kmeans = MiniBatchKMeans(n_colors)
kmeans.fit(data)
new_colors = kmeans.cluster_centers_[kmeans.predict(data)]


#重新著色
new_img = new_colors.reshape(img.shape)
new_img = (255 * new_img).astype(np.uint8)

fig, ax = plt.subplots(1, 2, figsize=(16, 6),
                       subplot_kw=dict(xticks=[], yticks=[]))
fig.subplots_adjust(wspace=0.05)
ax[0].imshow(img)
ax[0].set_title('Original Image', size=16)
ax[1].imshow(new_img)
ax[1].set_title(str(n_colors)+'-color Image', size=16);
#保存壓縮后的圖片
imageio.imsave(cname,new_img)


# 計(jì)算壓縮率

import os
from os.path import join, getsize

compress_ratio = getsize(cname) / getsize(iname)
compress_ratio

代碼參考:
https://mybinder.org/v2/gh/jakevdp/PythonDataScienceHandbook/master?filepath=notebooks%2FIndex.ipynb

里面的In Depth: k-Means Clustering

KevinZhang
Sep 20, 2018

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市给郊,隨后出現(xiàn)的幾起案子牡肉,更是在濱河造成了極大的恐慌,老刑警劉巖淆九,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件统锤,死亡現(xiàn)場(chǎng)離奇詭異毛俏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)饲窿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門煌寇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人逾雄,你說(shuō)我怎么就攤上這事阀溶。” “怎么了嘲驾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵淌哟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我辽故,道長(zhǎng),這世上最難降的妖魔是什么腐碱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任誊垢,我火速辦了婚禮,結(jié)果婚禮上症见,老公的妹妹穿的比我還像新娘喂走。我一直安慰自己,他們只是感情好谋作,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布芋肠。 她就那樣靜靜地躺著,像睡著了一般遵蚜。 火紅的嫁衣襯著肌膚如雪帖池。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天吭净,我揣著相機(jī)與錄音睡汹,去河邊找鬼。 笑死寂殉,一個(gè)胖子當(dāng)著我的面吹牛囚巴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播友扰,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彤叉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了村怪?” 一聲冷哼從身側(cè)響起秽浇,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎实愚,沒(méi)想到半個(gè)月后兼呵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體兔辅,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年击喂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了维苔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡懂昂,死狀恐怖介时,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凌彬,我是刑警寧澤沸柔,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站铲敛,受9級(jí)特大地震影響褐澎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伐蒋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一工三、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧先鱼,春花似錦俭正、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至宏多,卻和暖如春儿惫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绷落。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工姥闪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砌烁。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓筐喳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親函喉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子避归,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 摘要:對(duì)android 上圖片壓縮,其實(shí)總結(jié)起來(lái)基本可以分為兩類壓縮:尺寸壓縮和質(zhì)量壓縮管呵, 尺寸壓縮其實(shí)也可以理解...
    男爵是只貓丶閱讀 8,785評(píng)論 2 14
  • 三月梳毙,是溫潤(rùn)的。 只是步履有些匆忙捐下,稍有不留意账锹,樹(shù)梢上的葉子又不知什么時(shí)候嘩啦嘩啦長(zhǎng)大...
    阿芬阿小鄭閱讀 228評(píng)論 0 0
  • 積極覺(jué)察表萌业。 早起,低標(biāo)準(zhǔn)奸柬。閱讀生年,低標(biāo)準(zhǔn)。鍛煉:高標(biāo)準(zhǔn)廓奕。 今天跟朋友一起玩抱婉,從一開(kāi)始就想著放松,所以并沒(méi)有嚴(yán)格要求...
    再見(jiàn)你好_8260閱讀 150評(píng)論 0 0
  • 關(guān)鍵詞:基于數(shù)據(jù)元素值的查找桌粉、基于結(jié)點(diǎn)的查找 0. 查找的方式 基于數(shù)據(jù)元素值的查找GTreeNode<T>* f...
    編程半島閱讀 476評(píng)論 0 0