如何添加条纹噪声到图像?(Matlab,Python,C++)

q0qdq0h2  于 2022-12-13  发布在  Matlab
关注(0)|答案(1)|浏览(524)

我想在图像中添加人工噪声,该怎么做?你想以固定的像素间隔添加条纹,如下图所示。

我编写了下面的代码,每三行就在一行上添加黑色条纹

for i = 1:512
    counter = counter + 1;
    if counter > 3
        counter = 0;
    end
    for j = 1:512
        if counter < 3
            img{i,j} = 255;
        elseif counter == 3
            img{i,j} = 0;
        end
    end
end

fr = imread("image.bmp")

sum = fr + img;

我想我可以简单地添加条纹排列和图像这样做。但是,应该是零值的像素没有创建,因为原始图像的像素值被包括在内。结果只添加了值为0的白色条纹。
请让我知道,如果有一个功能或代码,把条纹噪音在垫 Package 。

s3fp2yjn

s3fp2yjn1#

您只需创建条带-PIL,然后创建Alpha composting
所以这里的方法是
1.首先创建条纹
1.然后叠加图像
我想我看到过去除图像中条纹噪声的功能...但是,从来没有任何功能方法来添加条纹噪声。

Python 
opencv - 4.5.5

像这样。

#create stripes
from PIL import Image, ImageDraw

img = Image.new('RGB', (100, 100), (255, 255, 255))
draw = ImageDraw.Draw(img)
for y in range(10, 91, 20):
    draw.line((100, y, 0, y), (0, 0, 0), 10)

img.save('stripes.png')

####Overlay 

import cv2

background = cv2.imread(r"bird.png", cv2.IMREAD_UNCHANGED)
foreground = cv2.imread(r"stripes.png", cv2.IMREAD_UNCHANGED)

height, width, channels = background.shape
foreground = cv2.resize(foreground, (width, height)) 


# normalize alpha channels from 0-255 to 0-1
alpha_background = background[:,:,2] / 255.0
alpha_foreground = foreground[:,:,2] / 255.0

# set adjusted colors
for color in range(0, 3):
    background[:,:,color] = alpha_foreground * foreground[:,:,color] + \
        alpha_background * background[:,:,color] * (1 - alpha_foreground)

# set adjusted alpha and denormalize back to 0-255
background[:,:,2] = (1 - (1 - alpha_foreground) * (1 - alpha_background)) * 255

# display the image
cv2.imshow("Composited image", background)
cv2.waitKey(0)

一些示例见解。

背景图像

噪音后

相关问题