高糊图像变清晰

一、前提

之前的项目需要进行车框识别,但是具体识别过程中,发现效果不是很理想,因为我们检测的对象往往是以车辆作为背景,也就是车辆的清晰度并不高,比如像下面这样的。对于这种清晰度不高的图像,hyperlpr的识别效果很不理想(比如下图就不能检测出车牌)

思考后,决定直接对图像清晰度下手。目前有两种方法:

(1)自己在网上找开源或者自己编写神经网络结构,借助数据集进行训练,然后得到模型。

(2)借助第三方接口,直接调用接口就可以将图片转化为高清。

由于我们这里对于图像清晰度的处理并不是非常重要的技术点,所以考虑直接调用接口:百度智能云平台       百度智能云-登录

二、具体实施

1、申请账号获得id

使用别人的接口,需要权限才可以,先进行权限的申请。申请账号后,进入“创建新应用”,先领取接口的免费额度。

这里我把《图像增强与特效》板块的接口都领取、选了,然后还是上图, 创建新应用。创建之后就可以获取到API key和Secret key ,这两个参数在获取token的时候用到。

2、获取token

# client_id 为官网获取的AK, client_secret 为官网获取的SK
import requests
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
    print(response.json())
access_token = response.json()['access_token']
print(access_token)

注意: &号前后不要加空格!!!直接把你的API key和Secret key弄上去取代【官网获取的AK】和【官网获取的SK】

运行程序,打印出来的信息花括号外的这一行就是你的token

 3、图片高清化处理

官方参考文档图像增强与特效 - 图像清晰度增强 | 百度AI开放平台 (baidu.com)

import requests
import base64

request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/image_definition_enhance"
# 二进制方式打开图片文件
f = open(r'C:\Users\DELL\Desktop\1.png', 'rb')#参数为自己所要处理的图片的地址!!!
img = base64.b64encode(f.read())

params = {"image": img}
access_token = '自己的token值!!!,进行替换!!!'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    print(response.json()['image'])

"""post的返回值是base64,不是png图像,需要进行转换"""
img_new = base64.b64decode(response.json()["image"])
file = open(r'C:\Users\DELL\Desktop\2.png', 'wb')#参数为自己所希望的处理结果的位置!!!
file.write(img_new)
file.close()

4、观察处理效果 

 处理之后可见如下,emmmm,轮胎什么的确实变清晰了,但是我需要的车牌。。。还是一样糊。(左为处理前,右为处理后)

寻找下一个目标 

### 关于IRCUR图像处理中的负值问题 在图像处理过程中,如果经过某些操作(如锐化滤波器或导数运算),可能会导致部分像素值为负值。通常情况下,这些负值需要被裁剪或者映射回合法范围(通常是 `[0, 255]` 对于8位灰度图)。可以通过以下方法解决: 1. **裁剪法**:将所有低于 `0` 的像素设置为 `0`,于 `255` 的像素设置为 `255`[^3]。 ```matlab I_clipped = max(0, min(I, 255)); ``` 2. **归一化法**:通过线性换将整个动态范围重新映射到 `[0, 255]` 范围内[^4]。 ```matlab I_normalized = uint8((I - min(I(:))) / (max(I(:)) - min(I(:))) * 255); ``` 这两种方式都可以有效避免因负值而导致的显示异常。 --- ### 处理S转视频后的模糊问题 当一系列静态图像帧转换成视频时,可能出现模糊现象的原因可能有多种因素,包括分辨率不匹配、压缩算法的选择不当等。以下是几种解决方案: 1. **保持一致的分辨率和比例** 如果原始图像与目标视频的分辨率不同,则可能导致插值失真。建议使用 MATLAB 中的 `imresize` 函数调整每张图片至统一尺寸后再合成视频[^1]。 ```matlab scale_factor = target_width / original_width; frame_resized = imresize(frame_original, scale_factor); ``` 2. **优化编码参数** 使用质量的编解码器能够减少视觉上的模糊感。例如,在创建 VideoWriter 对象时指定较的比特率或无损模式[^5]。 ```matlab writerObj = VideoWriter('outputVideo.avi', 'MPEG-4'); writerObj.Quality = 100; % 设置质量等级最 open(writerObj); for i = 1:numFrames writeVideo(writerObj, frames{i}); end close(writerObj); ``` 3. **增强对比度/清晰度** 在写入每一帧之前应用一些预处理技术来提升整体画质,比如利用通滤镜加强细节边缘[^2]。 ```matlab h = fspecial('unsharp'); % 创建未聚焦掩模核 enhancedFrame = imfilter(double(frame), h); % 应用空间域卷积 ``` 以上措施有助于改善最终输出视频的质量并减轻模糊效果的影响。 --- ### 总结 针对 IR CUR 图像中存在的负数值情况可采取裁切策略或是全局标准化手段加以修正;而对于由多幅静止画面组合而成动态影像期间所遇到的画面不清状况则需注意维持各组成部分间规格一致性的同时挑选恰当的数据保存形式以及适当增加额外修饰步骤从而达到更佳呈现成果的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这男人可真帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值