




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第python中如何提高图像质量目录python提高图像质量概述百度智能云PIL实现opencv实现python实现图像质量评价准则PSNR总结
python提高图像质量
概述
调研了一些提高图像质量的方式
深度学习方法,如微软的Bringing-Old-Photos-Back-to-Life的模型等。存在一些问题,首先是使用深度学习方法没有刚好的模型,得在自己的数据集上微调,比较麻烦,其次是带来的推理时间开销会比较大,不是特别划算,毕竟只是一个小环节。商用API,发现百度智能云提供了很多这方面的API,调用相当方便,但是免费次数有限啊。基于python自带的PIL实现图片亮度增强、饱和度增强、对比度增强以及锐度增强。基于opencv实现数字图像处理!!!
百度智能云
官方教程:链接
参考代码(方便的一塌糊涂):
fromaipimportAipImageProcess
importbase64
importos
APP_ID=''
API_KEY=''
SECRET_KEY=''
client=AipImageProcess(APP_ID,API_KEY,SECRET_KEY)
"""读取图片"""
defget_file_content(filePath):
withopen(filePath,'rb')asfp:
returnfp.read()
defget_all_file(path):
all_file=[]
foriinos.listdir(path):
file_name=os.path.join(path,i)
all_file.append(file_name)
returnall_file
forimg_pathinget_all_file('img'):
image=get_file_content(img_path)
"""调用图像清晰度增强"""
ifnotos.path.exists('output'):
os.mkdir('output')
response=client.imageDefinitionEnhance(image)
imgdata=base64.b64decode(response['image'])
file=open(os.path.join('output',img_path.split('\\')[-1]),'wb')
file.write(imgdata)
file.close()
PIL实现
fromPILimportImage
fromPILimportImageEnhance
importnumpyasnp
importmatplotlib.pyplotasplt
plt.rcParams['font.sans-serif']=['FangSong']#设置字体以便正确显示汉字
plt.rcParams['axes.unicode_minus']=False#正确显示连字符
image=Image.open('img/timg.jpg')
#亮度增强
enh_bri=ImageEnhance.Brightness(image)
brightness=2
image_brightened=enh_bri.enhance(brightness)
#色度增强(饱和度↑)
enh_col=ImageEnhance.Color(image)
color=2
image_colored=enh_col.enhance(color)
#对比度增强
enh_con=ImageEnhance.Contrast(image)
contrast=2
image_contrasted=enh_con.enhance(contrast)
#锐度增强
enh_sha=ImageEnhance.Sharpness(image)
sharpness=4.0
image_sharped=enh_sha.enhance(sharpness)
fig,axes=plt.subplots(nrows=2,ncols=3,figsize=(10,8),dpi=100)
axes[0,0].imshow(np.array(image,dtype=np.uint8)[:,:,::-1])
axes[0,0].set_title("原图")
axes[0,1].imshow(np.array(image_brightened,dtype=np.uint8)[:,:,::-1])
axes[0,1].set_title("亮度增强")
axes[0,2].imshow(np.array(image_colored,dtype=np.uint8)[:,:,::-1])
axes[0,2].set_title("饱和度增强")
axes[1,0].imshow(np.array(image_contrasted,dtype=np.uint8)[:,:,::-1])
axes[1,0].set_title("对比度增强")
axes[1,1].imshow(np.array(image_sharped,dtype=np.uint8)[:,:,::-1])
axes[1,1].set_title("锐度增强")
axes[1,2].imshow(np.array(image_sharped,dtype=np.uint8)[:,:,::-1])
axes[1,2].set_title("锐度增强")
plt.show()
opencv实现
链接
python实现图像质量评价准则PSNR
计算PSNR的Python代码,网上有下面两种:
importcv2
importnumpyasnp
importmath
defpsnr1(img1,img2):
mse=np.mean((img1-img2)**2)
ifmse1.0e-10:
return100
return10*math.log10(255.0**2/mse)
defpsnr2(img1,img2):
mse=np.mean((img1/255.-img2/255.)**2)
ifmse1.0e-10:
return100
PIXEL_MAX=1
return20*math.log10(PIXEL_MAX/math.sqrt(mse))
理论上,这两种计算方式都对应上面的计算公式,在输入图像一样的情况下,这两段代码的结果应该是一样的。
但是,在调用这段代码的时候,我发现这两者的结果却相差很远,同样的图片,psnr1的结果大概是29,而psnr2的结果是12。
gt=cv2.imread('1.jpg')
img=cv2.imread('2.jpg')
print(psnr1(gt,img))
print(psnr2(gt,img))
单看代码的话完全看不出来任何问题,后来我输出了这两张图像作差的结果,发现所有的值都是在0-255之间的,比如img1的一个像素值是30,img2的一个像素值是60,二者作差,本来应该是-30,但是结果却是226,即对于负值,输出要加上256。
所以,问题就出在这行代码上:
mse=np.mean((img1-img2)**2)
如果img1某个点的像素比img2小,而两者差别又比较大,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 简易暖气安装合同范本
- 工程间接合同范本
- 健康产品采购合同范本
- 月子看护服务合同范本
- 上海商铺合同范本
- 店面设备回收合同范本
- 体育与健康课程标准试题及答案
- 班主任素养大赛试题(附答案)
- 2025司索指挥试题及答案
- 2025安徽高级档案职称模拟试题及答案
- PICC穿刺点感染个案护理课件
- 《动眼神经解剖》课件
- 2023全球数字经济白皮书
- 2023-2024苏教版小学四年级数学上册(全册)教案设计
- 烟草行业应急预案编制与管理培训
- 2024事业单位食堂考试题及答案
- “双减”政策背景下小学语文读写研究
- 光学设计 第3讲 色度学
- 孔子的美学思想对现代设计的启示
- 脑干损伤的急救处理与康复训练
- 2025年日历日程表含农历可打印
评论
0/150
提交评论