山东大学软件学院2018级项目实训 第14周-图像修复/去水印

山东大学软件学院2018级项目实训 第14周-图像修复/去水印

在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,我们可以通过调用opencv的框架来实现图像修复,或者在一些特定场景下去除水印的效果

1.实现原理
简单的来说就是对噪声的特征进行人为标定,在使用噪声周围的颜色特征推理出应该修复的图片的颜色,从而实现图片修复的。不过这样做也存在一定弊端:只能对特定的噪声进行去除,并且噪声的特点需要人为来标注

2.实现代码

def fun_pic_repair(instance):
    print("图像修复/去水印")
    img = instance.m_image
    img = cv.cvtColor(img, cv.COLOR_RGB2BGR)
    hight, width, depth = img.shape[0:3]

    # 图片二值化处理,把[240, 240, 240]~[255, 255, 255]以外的颜色变成0
    thresh = cv.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))

    # 创建形状和尺寸的结构元素
    kernel = np.ones((3, 3), np.uint8)

    # 扩张待修复区域
    hi_mask = cv.dilate(thresh, kernel, iterations=1)
    specular = cv.inpaint(img, hi_mask, 5, flags=cv.INPAINT_TELEA)

    # cv.namedWindow("Image", 0)
    # cv.resizeWindow("Image", int(width / 2), int(hight / 2))
    # cv.imshow("Image", img)

    cv.namedWindow("newImage", 0)
    cv.resizeWindow("newImage", int(width), int(hight))
    cv.imshow("newImage", specular)
    cv.waitKey(0)

函数实现并不复杂,thresh = cv.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))
我们把灰度值过高的部分设定为噪声

3.效果
在这里插入图片描述
在这里插入图片描述
去噪效果还是非常明显的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值