Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python对照片进行去噪_Python_Image Processing_Noise - Fatal编程技术网

用Python对照片进行去噪

用Python对照片进行去噪,python,image-processing,noise,Python,Image Processing,Noise,我有以下图片,这是一本旧书的扫描件。我想消除背景中的噪音(有点红),这是由于扫描旧照片而产生的 更新: 应用opencv后,按照中的参数设置,我将获得以下输出。 请帮忙修理这个 我正在使用的代码: import numpy as np import cv2 from matplotlib import pyplot as plt def display_image_in_actual_size(im_data): dpi = 80 height, width, depth

我有以下图片,这是一本旧书的扫描件。我想消除背景中的噪音(有点红),这是由于扫描旧照片而产生的

更新:

应用
opencv
后,按照中的参数设置,我将获得以下输出。

请帮忙修理这个

我正在使用的代码:

import numpy as np
import cv2
from matplotlib import pyplot as plt

def display_image_in_actual_size(im_data):

    dpi = 80
    height, width, depth = im_data.shape

    # What size does the figure need to be in inches to fit the image?
    figsize = width / float(dpi), height / float(dpi)

    # Create a figure of the right size with one axes that takes up the full figure
    fig = plt.figure(figsize=figsize)
    ax = fig.add_axes([0, 0, 1, 1])

    # Hide spines, ticks, etc.
    ax.axis('off')

    # Display the image.
    ax.imshow(im_data, cmap='gray')

    plt.show()

img = cv2.imread('scan03.jpg')

dst = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)

display_image_in_actual_size(img)
display_image_in_actual_size(dst)

opencv
库有两个denoisong函数


您可以通过示例阅读

opencv
库有两个denoisong函数


您可以通过示例阅读

一些接近阈值像素值的像素的颜色将受到影响,但这取决于任务,这里有一个解决方案,您可以将阈值调整为适合您任务的值,也可以删除中值滤波器,或降低西格玛值
(5)
如果它严重影响文本,可能会产生一些不希望出现的噪音,但文本是可读的

将numpy导入为np
将matplotlib.pyplot作为plt导入
进口cv2
#读取图像
img=cv2.imread('input.jpg')
#BGR-->RGB
RGB=cv2.CVT颜色(img,cv2.COLOR_BGR2RGB)
#BGR-->灰色
灰色=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY)
#设置阈值
th_白=210
THU黑色=85
#复制原始灰色
蒙版\白色=灰色。复制()
mask_black=gray.copy()
#阈值
蒙版白[蒙版白=黑]=255
#中值过滤(如果文本不可读,可以删除)
中间白=cv2.中间白(遮罩白,5)
中间黑=cv2.中间黑(遮罩黑,5)
#屏蔽3通道
遮罩白3=np.堆栈([中间白,中间白,中间白],轴=2)
遮罩黑色3=np.堆栈([中间黑色,中间黑色,中间黑色],轴=2)
#遮罩图像(RGB格式)
结果1=np.最大值(遮罩白3,RGB)
结果2=np.最小值(遮罩3,结果1)
#将结果可视化
plt.imshow(结果2)
打印轴(“关闭”)
plt.show()

某些像素接近阈值的颜色会受到影响,但这取决于任务,这里有一个解决方案,您可以将阈值调整为适合您任务的值,也可以删除中值滤波器,或者如果严重影响文本,则减少sigma值
(5)
,您可能有一些不需要的噪音,但文本是可读的

将numpy导入为np
将matplotlib.pyplot作为plt导入
进口cv2
#读取图像
img=cv2.imread('input.jpg')
#BGR-->RGB
RGB=cv2.CVT颜色(img,cv2.COLOR_BGR2RGB)
#BGR-->灰色
灰色=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY)
#设置阈值
th_白=210
THU黑色=85
#复制原始灰色
蒙版\白色=灰色。复制()
mask_black=gray.copy()
#阈值
蒙版白[蒙版白=黑]=255
#中值过滤(如果文本不可读,可以删除)
中间白=cv2.中间白(遮罩白,5)
中间黑=cv2.中间黑(遮罩黑,5)
#屏蔽3通道
遮罩白3=np.堆栈([中间白,中间白,中间白],轴=2)
遮罩黑色3=np.堆栈([中间黑色,中间黑色,中间黑色],轴=2)
#遮罩图像(RGB格式)
结果1=np.最大值(遮罩白3,RGB)
结果2=np.最小值(遮罩3,结果1)
#将结果可视化
plt.imshow(结果2)
打印轴(“关闭”)
plt.show()

您还想“增白”红色吗?如果是这样的话,你可能想研究一下白平衡的修正。你也想“变白”红色吗?如果是这样的话,你可能想研究一下白平衡修正。我尝试使用
opencv
。我得到的输出有点蓝。我已经更新了问题中的输出。可能是我不确定是否设置了导致输出如此的参数。你能帮忙吗?嗨。我尝试使用
opencv
。我得到的输出有点蓝。我已经更新了问题中的输出。可能是我不确定是否设置了导致输出如此的参数。你能帮忙吗?