博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python利用opencv合成模糊图像
阅读量:6968 次
发布时间:2019-06-27

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

之前需要评估图像质量来筛选成像质量不错的图片,去除由于对焦,运动等造成的模糊图像,所以在构建数据集的时候考虑用opencv对清晰的图片进行处理获得模糊的图片从而进行训练。

1) 运动模糊图像

一般来说,运动模糊的图像都是朝同一方向运动的,那么就可以利用cv2.filter2D函数。

import numpy as npdef motion_blur(image, degree=10, angle=20):    image = np.array(image)        # 这里生成任意角度的运动模糊kernel的矩阵, degree越大,模糊程度越高    M = cv2.getRotationMatrix2D((degree/2, degree/2), angle, 1)    motion_blur_kernel = np.diag(np.ones(degree))    motion_blur_kernel = cv2.warpAffine(motion_blur_kernel, M, (degree, degree))        motion_blur_kernel = motion_blur_kernel / degree            blurred = cv2.filter2D(image, -1, motion_blur_kernel)    # convert to uint8    cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)    blurred = np.array(blurred, dtype=np.uint8)    return blurred

原图

动态模糊

2) 对焦模糊

opencv提供了GaussianBlur函数(具体参见).

image = cv2.GaussianBlur(image, ksize=(degree, degree), sigmaX=0, sigmaY=0)

对焦模糊

3) 噪点

其实就是在每个像素点添加随机扰动:

def gaussian_noise(image, degree=None):    row, col, ch = image.shape    mean = 0    if not degree:        var = np.random.uniform(0.004, 0.01)    else:        var = degree    sigma = var ** 0.5    gauss = np.random.normal(mean, sigma, (row, col, ch))    gauss = gauss.reshape(row, col, ch)    noisy = image + gauss    cv2.normalize(noisy, noisy, 0, 255, norm_type=cv2.NORM_MINMAX)    noisy = np.array(noisy, dtype=np.uint8)    return noisy

噪点

参考:

转载于:https://www.cnblogs.com/arkenstone/p/8480759.html

你可能感兴趣的文章
[Android开发Tips]Bean的定义
查看>>
less
查看>>
PrestaShop 网站后台配置(三)
查看>>
【Win8启动后自动进入传统桌面设置】
查看>>
GP通过外部表装载数据时遇到ERROR:extra data after last expected column解决方法
查看>>
hdu2639,第K优决策
查看>>
hdu1166 敌兵布阵
查看>>
gcd(辗转相除法)
查看>>
多个Silverlight应用程序如何共享一个DomainService
查看>>
RCNN论文翻译
查看>>
sql serve存储过程
查看>>
新闻发布项目——后台JSP界面adminManage/modifyCategory.jsp
查看>>
搜索引擎平台化的构想
查看>>
Element-ui学习笔记3--Form表单(二)
查看>>
Date
查看>>
C++ 二分查找函数 lower_bound upper_bound
查看>>
【转载】插件自动升级
查看>>
python --error整理(不定时更新)
查看>>
Apache+PHP+MySQL+phpMyAdmin+WordPress搭建
查看>>
shell 字符串操作(长度,查找,替换)详解
查看>>