专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

means聚类进行图像识别色彩压缩_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/7 1:30:03       共计:3596 浏览

means聚类进行图像识别色彩压缩?

1、创建一个python文件,并导入库文件:

import argparse

import numpy as np

from scipy import misc

import matplotlib.pyplot as plt

from sklearn import cluster

2、创建一个函数,用于解析输入参数。我们需要把图片和每个像素被压缩的 比特数传进去作为输入参数:

def build_arg_parser():

parser = argparse.ArgumentParser(description = 'Compress the

input image \using clustering')

parser.add_argument("--input-file",dest="input_file",required =True,help="Input image")

parser.add_argument("--num-bits",dest="num_bits",required =False,type=int,help="Number of bits

used to repressent each pixel")

return parser

下图为pycharm编译器配置加载文件的操作

3、创建一个函数,用来压缩输入图片:

def compress_image(img,num_clusters):

# 将输入的图片转换成(样本量,特征量)数组,以运行k-means聚类算法

X = img.reshape((-1,1))

kmeans = cluster.KMeans(n_clusters=num_clusters,n_init=4,

random_state=5)

kmeans.fit(X)

centroids = kmeans.cluster_centers_.squeeze()

labels = kmeans.labels_

# 为每个数据配置离它最近的中心点,并转变为图片的形状

input_image_compressed = np.choose(labels,centroids).reshape(

img.shape)

retrun input_image_compressed

4、绘制图像查看压缩算法对图片质量的影响:

def plot_image(img,title):

vmin = img.min()

vmax = img.max()

plt.figure()

plt.title(title)

plt.imshow(img,cmap=plt.cm.get_cmap('gray'),vmin=vmin,

vmax=vmax)

5、定义主函数,可以把输入参数传进去并进行处理,然后提取输出图片:

if __name__=='__main__':

args = build_arg_parser().parser_args()

input_file = args.input_file

num_bits= args.num_bits

if not 1<=num_bits<=8:

raise TypeError('Number of bits should be between 1 and 8')

num_clusters = no.power(2,num_bits)

# 打印压缩率

compression_rate = round(100*(8.0-args.num_bits)/8.0,2)

print("\nThe size of the image will be reduced by a factor of",

8.0/args.num_bits)

print("\nCompression rate = "+str(compression_rate)+"%")

6、加载输入图片

input_image = misc.imread(input_file,True).astype(np.uint8)

plot_image(input_image,'Original image')

7、用输入参数压缩图片

input_image_compressed = compress_image(input_image,

num_clusters)

plot_image(input_image_compressed,'Compressed_image;

compression rate = ' + str(compression_rate) + '%')

plt.show()

8、在命令行工具中运行下面的命令,针对不同的压缩比特数,显示图像:

每个像素的压缩比特数将为4:

--input-file flower_image.jpg --num-bits 4

每个像素的压缩比特数将为2:

--input-file flower_image.jpg --num-bits 2

每个像素的压缩比特数将为1:

--input-file flower_image.jpg --num-bits 1

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:学好一个编程语言大概要多长时间_java | ·下一条:计算机二级语言程序设计是什么_java

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有