用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
。我得到的输出有点蓝。我已经更新了问题中的输出。可能是我不确定是否设置了导致输出如此的参数。你能帮忙吗?