Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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_Opencv_Image Processing_Noise - Fatal编程技术网

如何在python中添加更好的噪波?

如何在python中添加更好的噪波?,python,opencv,image-processing,noise,Python,Opencv,Image Processing,Noise,我试图在最小像素之间添加均匀分布的随机噪声 对于原始图像的每个通道,每个像素的最大像素值的0.1倍 以下是我目前的代码: [in]: 导入cv2 将numpy作为np导入 将matplotlib.pyplot作为plt导入 #用cv2读取图像 image=cv2.imread('example_image.jpg',1) image\u rgb=cv2.cvt颜色(image,cv2.COLOR\u BGR2RGB) #显示图像 imshow(图像_rgb) #R、G、B通道分离 R、 G,B=

我试图在最小像素之间添加均匀分布的随机噪声 对于原始图像的每个通道,每个像素的最大像素值的0.1倍

以下是我目前的代码:

[in]:

导入cv2
将numpy作为np导入
将matplotlib.pyplot作为plt导入
#用cv2读取图像
image=cv2.imread('example_image.jpg',1)
image\u rgb=cv2.cvt颜色(image,cv2.COLOR\u BGR2RGB)
#显示图像
imshow(图像_rgb)
#R、G、B通道分离
R、 G,B=cv2.分割(图像_rgb)
#制造噪音
噪声=np.随机.均匀(R.最小值(),R.最大值()*0.1,R.大小)
噪声形状=(256256)
噪声=np.随机性.均匀性(B.最小值(),B.最大值()*0.1,G.尺寸)
噪声形状=(256256)
噪声=np.随机.均匀(G.最小值(),G.最大值()*0.1,B.尺寸)
噪音形状=(256256)
#分别向每个通道添加噪声
R=R+噪声
G=G+噪声
B=B+噪声
rgb_噪声=R+G+B
噪声图像=图像+rgb噪声
[out]:

ValueError:操作数无法与形状一起广播(256256,3)(256256)

我得到一个值错误,即rgb_噪波和图像的阵列形状不相等。我曾尝试将rgb_噪声的形状更改为图像的形状,但我得到了一个大小错误。如何修复它?有没有更好的方法

您的解决方案有点冗长,可以简化。 然而,你没有得到白噪声的原因是你计算红色通道与其他两个不同

更改此选项:

noise_R = np.random.uniform(R_min,R_max*0.3, image_G.size)
为此:

noise_R = np.random.uniform(R_min,R_max*0.1, image_R.size)

您可以简化,只通过numpy数组添加噪波

import numpy
import matplotlib.pyplot as plt
import cv2
看,绘制图像只适用于jupyter笔记本电脑。 对其他IDE执行cv2.imshow()

1) 有你的形象吗

img = cv2.imread('path').astype(np.uint0)
2) 胡闹

r, g, b = img.shape
noise = np.random.randint(0,255,r*g*b).reshape(r,g,b)
3) 混合它们

image_with_noise = cv2.addWeighted(img,0.5,noise,0.5,0)
您可以调整alpha和beta值的值


你有一个嘈杂的图像

只有您可以决定输出是否符合您的要求。虽然您的目标相同,但这是一个完全不同的问题。您现在正在使用另一个库,并且已删除输入/输出信息。细化你的目标是可以的,但是要避免完全改变它。如果你不能处理这个新代码的问题,请考虑恢复原来的问题,并提出一个新的问题。“我知道我会用我的项目的其他代码,这里的代码可能被认为是抄袭,所以我不想冒这个险。真的是我的错,绝对不会再犯同样的错误了!如果是你的代码,就不存在自我剽窃。至于StackOverflow中的其他代码,请参见。哪个部分会在最小像素值和最大像素值的0.1倍之间均匀分布,从而产生随机噪声?@moli这是第二步。。。这只是一个例子,你可以改变你自己的价值观。。。这介于0到0之间255@AAYUHSHAH在“附加权重”部分,你给图像和噪声赋予了一半/一半权重吗?“0”表示的是什么part@moli我在addweighted()中给出的第五个参数是Gamma参数。gamma本质上就是简单地调整图像的亮度。但从技术上讲,亮度和伽马有点不同。这里我们只需要有噪声的图像。然后,我们不需要伽马,它是0。它是强制参数。