python实现图像高斯滤波,以及几种图像格式的差异

利用python实现高斯滤波,并没有什么难度。但在实现过程出现一些有意思的过程!

首先利用opencv实现很简单,代码如下:

import cv2
import datetime
import matplotlib.pyplot as plt 
import numpy as np
import PIL

f = plt.imread('G:\SR\HR_image\img_1_HR.jpg')



image_3_LF = cv2.GaussianBlur(f,(3,3),0)  #(3,3)为高斯半径
#image_3_LF为高斯滤波后的低分图像
plt.imsave("G:\SR\guassi_LF_image\img_1_LR", image_3_LF)

res_3 = cv2.subtract(f , image_3_LF )  #得到残差高频图

plt.imsave('G:\SR\Res_image\img_1_res', res_3)

值得注意的是,在我利用plt读取图片时,高斯滤波以后得到的图像是没有问题的,但是残差图出现很大的差异!

python实现图像高斯滤波,以及几种图像格式的差异_第1张图片 python实现图像高斯滤波,以及几种图像格式的差异_第2张图片

                  正常残差图                                                                    异常残差图

 

分析原因是在做图片相减时出现的原因,JPG图片(原图)减PNG图像(高斯滤波后图像)就没有问题,但是当原图是PNG图像时,就会出现异常残差图。

下面介绍一下几种常用图像格式的差异(原文):

1.JPG:使用的一种失真压缩标准方法,24 bit真彩色,不支持动画、不支持透明色。JPEG的压缩方式通常是破坏性资料压缩(lossy compression),即在压缩过程中图像的品质会遭受到可见的破坏。一张图片多次上传下载后,图片逐渐会失真。

2.PNG:格式是无损数据压缩的,PNG格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基础上增加了8位透明通道(32-24=8),因此可展现256级透明程度。

3.BMP:是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP图像所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。
 python实现图像高斯滤波,以及几种图像格式的差异_第3张图片

你可能感兴趣的:(知识点)