mahotas小波变换 Wavelet Transforms-无损压缩图片
发布日期:2021-06-29 14:44:29 浏览次数:3 分类:技术文章

本文共 2904 字,大约阅读时间需要 9 分钟。

1.1.用途:# 无损压缩图片-小波变换,在保留大部分信号的前提下使大多数值均为0(否则较小)
2.实例:实例1:无损压缩图片import numpy as np ,mahotas  as mhfrom matplotlib import pyplot as pltimage = mh.demos.load('luispedro', as_grey=True)               #加载图片-原始图像中没有零image = image[:256,:256]print("1.图像中像素为0所占比例: {0}".format(np.mean(image==0)))#0.0# plt.imshow(image,cmap='gray')# plt.show()# 1.基线压缩方法:每隔一个像素保存一次,仅保存高位img1 = image[::2,::2].copy()img1 /= 8;img1 = img1.astype(np.uint8)                        #丢弃低位print("2.图像中像素为0所占比例: {0}".format(np.mean(img1==0)))#0.000732421875plt.imshow(img1,cmap='gray')                                  #图像上有小方块plt.show()#2.1.使用D8小波变换以获得变换后的图像img2:丢弃高阶位img2 = mh.daubechies(image,'D8')img2 /= 8 ;img2 = img2.astype(np.int8)                        #丢弃低位print("3.图像中像素为0所占比例: {0}".format(np.mean(img2==0)))#0.5917205810546875plt.imshow(img2,cmap='gray')plt.show()#2.2.小波反变换 显示图片质量:在图片质量没有太多损失的情况下是一个相当不错的降低img3 = mh.idaubechies(img2, 'D8')plt.imshow(img3,cmap='gray')plt.show()# 3.继续压缩图片到77%(其余值都较小)非常好地压缩为无损图像,且可在传输后重建完整图像threshold = mh.thresholding.soft_threshold(img2, 12)print("4.图像中像素为0所占比例:  {0}".format(np.mean(threshold==0)))#0.7700042724609375img4 = mh.idaubechies(threshold, 'D8')#小波反变换plt.imshow(img4,cmap='gray')plt.show()
实例2:边界Borders            import numpy as np ,mahotas  as mhfrom matplotlib import pyplot as pltimage = mh.demos.load('luispedro', as_grey=True)  #加载图片-原始图像中没有零image = image[:256,:256]plt.title('image');plt.imshow(image,cmap='gray');plt.show()# 可在边框处看到一些工件。可用wavelet_center,wavelet_decenter处理边框:img1 = mh.wavelet_center(image)plt.title('image1');plt.imshow(img1,cmap='gray');plt.show()img2 = mh.daubechies(img1, 'D8')img3 = mh.idaubechies(img1, 'D8')plt.title('image3');plt.imshow(img3,cmap='gray');plt.show()img4 = mh.wavelet_decenter(img3, img1.shape)# 现在,img4等于(不舍入)img1没有任何边框效果plt.title('image4');plt.imshow(img4,cmap='gray');plt.show()

 

3.函数:mh.haar(image, preserve_energy=True, inline=False)# 哈尔变换Haar transform                参数:image:二维数组-输入图像                    reserve_energy:bool,可选-是否标准化结果以便保留能量energy is preserved(默认值)inline : bool, optional是否将结果写入输入图像。默认返回新图像。整数图像始终会转换为浮点并进行复制mh.ihaar(image, preserve_energy=True, inline=False)# 逆哈尔变换                         参数:                    image:二维数组-输入图像。如果它是整数图像,则将其转换为浮点数(双精度)reserve_energy:bool,可选-是否标准化结果以便保留能量(默认值)inline : bool, optional是否将结果写入输入图像。默认返回新图像。整数图像始终会转换为浮点并进行复制                  返回值:image:ndarray  mh.daubechies(image,code,inline = False )# Daubechies小波变换-如图像大小是2的幂最有效                  参数:                    image:ndarray二维图像                    code : str “ D2”,“ D4”,...“ D20”之一                    inline : bool, optional是否将结果写入输入图像。默认返回新图像。整数图像始终会转换为浮点并进行复制mh.idaubechies(image, code, inline=False)    # Daubechies小波逆变换                    参数:                    image:ndarray二维图像                    code : str“ D2”,“ D4”,...“ D20”之一                    inline : bool, optional是否将结果写入输入图像。默认返回新图像。整数图像始终会转换为浮点并进行复制

 

 

 

转载地址:https://chunyou.blog.csdn.net/article/details/106313857 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:sklearn-导入数据(第1讲)
下一篇:mahotas标记图像Labeled Image

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月25日 00时05分00秒