首页 文章 精选 留言 我的

精选列表

搜索[量化交易],共10000篇文章
优秀的个人博客,低调大师

通过k-means进行图像量化压缩--python实现

image.png 逻辑梳理 对于电脑来说,每种颜色都会有一个对应RGB值,比如黑色是[0,0,0],白色是[255,255,255],所以RGB模式下,最多可以区分16581375(255的三次方)种颜色。 另外我们知道,一张图片的大小与分辨率正相关,但其实也与图片颜色的复杂度是正相关的,相同分辨率的情况下,一张纯色图片是比一张五彩斑斓的图片要小的。 一张分辨率为100*100的图片,其实就是由10000个RGB值组成。所以我们要做的就是对于这10000个RGB值聚类成K个簇,然后使用每个簇内的质心点来替换簇内所有的RGB值,这样在不改变分辨率的情况下使用的颜色减少了,图片大小也就会减小了。 内容 导入包 import matplotlib.pyplot as plt import seaborn as sns from sklearn.cluster import KMeans #导入kmeans from sklearn.utils import shuffle import numpy as np from skimage import io import warnings warnings.filterwarnings('ignore') 图片读取 original = mpl.image.imread('Yosemite 5.jpg') width,height,depth = original.shape temp = original.reshape(width*height,depth) temp = np.array(temp, dtype=np.float64) / 255 图像读取完我们获取到的其实是一个width*height的三维矩阵(width,height是图片的分辨率) 训练模型 original_sample = shuffle(temp, random_state=0)[:1000] #随机取1000个RGB值作为训练集 def cluster(k): estimator = KMeans(n_clusters=k,n_jobs=8,random_state=0)#构造聚类器 kmeans = estimator.fit(original_sample)#聚类 return kmeans 我们只随机取了1000组RGB值作为训练,k表示聚类成 k个簇,对于本文就是K种颜色。 RGB值转化为图像 def recreate_image(codebook, labels, w, h): d = codebook.shape[1] image = np.zeros((w, h, d)) label_idx = 0 for i in range(w): for j in range(h): image[i][j] = codebook[labels[label_idx]] label_idx += 1 return image 聚类 我们选取了32,64,128三个K值来做比较: kmeans = cluster(32) labels = kmeans.predict(temp) kmeans_32 = recreate_image(kmeans.cluster_centers_, labels,width,height) kmeans = cluster(64) labels = kmeans.predict(temp) kmeans_64 = recreate_image(kmeans.cluster_centers_, labels,width,height) kmeans = cluster(128) labels = kmeans.predict(temp) kmeans_128 = recreate_image(kmeans.cluster_centers_, labels,width,height) 画图并保存 plt.figure(figsize = (15,10)) plt.subplot(2,2,1) plt.axis('off') plt.title('Original image') plt.imshow(original.reshape(width,height,depth)) plt.subplot(2,2,2) plt.axis('off') plt.title('Quantized image (128 colors, K-Means)') plt.imshow(kmeans_128) io.imsave('kmeans_128.png',kmeans_128) plt.subplot(2,2,3) plt.axis('off') plt.title('Quantized image (64 colors, K-Means)') plt.imshow(kmeans_64) io.imsave('kmeans_64.png',kmeans_64) plt.subplot(2,2,4) plt.axis('off') plt.title('Quantized image (32 colors, K-Means)') plt.imshow(kmeans_32) io.imsave('kmeans_32.png',kmeans_32) plt.show() 结果如下: 差别还是比较明显的,随着颜色变少,图片也越来越马赛克了。 其实对于图片压缩这块,各大互联网公司投入人力优化,在保证图片清晰的情况下,减小文件大小,这样一能为公司节省一大笔带宽费用,二也能让用户更快的加载出图片,提升用户体验。 这篇文章也只是我在学k-means时候看到的一个案例,对于图片压缩只是很小的一部分,写这片文章的时候我也查了下相关的知识,真要下功夫研究,可是一门大学问。 最后:peace~

优秀的个人博客,低调大师

暗网地下交易:你的个人数据价值多少钱?

根据Privacy Affairs的说法,在暗网中,信用卡详细信息、在线银行登录名和社交媒体凭据都可以用非常低廉的价格获得。 网上银行登录凭证的平均价格为$ 35(人民币245.64) 完整的信用卡详细信息(包括相关数据),价格为$ 12-20(84.2~140.33) 而一整套允许盗用身份的各种文件和账户详细信息,只要$ 1500(10524.9) 此外,在暗网上还可以看到与被盗数据匹配的驾照、护照、自动保险卡等伪造文件。根据研究人员对暗网市场一系列“产品和服务”价格指数的扫描统计,发现: 网上银行登录:$ 35 网上银行凭证通常包括登录信息、帐户持有人的姓名和地址,以及关于如何在未被发现的情况下访问帐户的具体细节。 完整的信用卡详细信息:$12-20 信用卡详细信息通常采用简单的格式,比如卡号、关联日期和CVV,以及帐户持有人的数据(地址、邮政编码、电子邮件地址和电话号码等)。在信用卡信息之上,如果要获得一整套允许盗用身份的各种文件和账户详细信息,价格则是$ 1285。甚至,犯罪分子还能多花950美元将欧洲身份证换成美国护照。 也就是说,最多花费2235美元,犯罪分子所获得的数据和文件就能支撑他完成任何欺诈行为。 受感染的系统上普遍存在恶意软件 一次可在1000台计算机上远程安装软件,使犯罪分子可以瞄准不同国家并以勒索软件等恶意软件攻击公众,成功率甚至达70%。 被盗数据很容易传播 公众不仅需要意识到身份盗用威胁的普遍性,还应该知道一旦数据被盗,会迅速在暗网市场传播、被利用乃至造成实际损失。因此,应该在日常生活中的各个方面都要保护自己的数据,以此尽可能地降低这些威胁。 【责任编辑: 赵宁宁 TEL:(010)68476606】

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册