Python文本彩色图像去污

import numpy as np
from PIL import Image
from scipy import signal
import cv2

def load_image(path):
    #从路径中读取图片
    img = cv2.imread(path)
    #拆分图片通道
    b, g, r = cv2.split(img)
    # 将矩阵中的值空值在0-1范围内  归一化
    return np.asarray(b) / 255.0,np.array(g) / 255.0,np.array(r) / 255.0

def save(path, img):
    #重新回执图片通道值
    tmp = np.asarray(img * 255.0, dtype=np.uint8)
    #保存图片到指定路径
    Image.fromarray(tmp).save(path)


def denoise_image(inp):
    # 滤波函数  11 是核大小
    # bg = signal.medfilt(inp, kernel_size=(11, 11, 11))
    bg = signal.medfilt2d(np.array(inp), 31)
    #滤波二次去除
    bg = signal.medfilt2d(np.array(bg), 17)
    #滤波三次去除
    bg = signal.medfilt2d(np.array(bg), 31)
    #保存背景图片
    save('background.jpg', bg)
    #对比判断获取mask遮罩
    mask = inp < bg - 0.25
    print(mask)
    save('foreground_mask.jpg', mask)
    #替换这种中的的图片值为白色
    return np.where(mask, inp, 1.0)


inp_path = '00039.jpg'

out_path = 'out.jpg'
#加载并拆分图片
b,g,r = load_image(inp_path)
#获取蓝色通道
outb = denoise_image(b)
#获取绿色通道
outg = denoise_image(g)
#获取红色通道
outr = denoise_image(r)
#合并三通道
out = cv2.merge([outr,outg,outb])
#保存数据到指定路径
save(out_path, out)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值