Bildbrusgenerering beror på vilken typ av brus du vill simulera och den realismnivå du behöver. Här är några vanliga metoder:
1. Slumpmässig nummergenerering: Detta är den mest grundläggande metoden. Du genererar slumpmässiga nummer inom ett specifikt intervall och kartlägger sedan dessa siffror till pixelvärden.
* enhetligt brus: Detta är den enklaste typen. Du genererar slumpmässiga nummer enhetligt fördelade mellan ett minimum och maximivärde (t.ex. 0 och 255 för 8-bitars gråskalabilder). Detta resulterar i ett fläckigt utseende. Bibliotek som Numpy i Python gör detta enkelt:
`` `python
Importera numpy som NP
Importera matplotlib.pyplot som plt
bredd, höjd =256, 256
brus =np.random.randint (0, 256, storlek =(höjd, bredd), dType =np.uint8)
plt.imshow (brus, cmap ='grå')
plt.show ()
`` `
* gaussiskt brus (normalt brus): Detta är mer realistiskt eftersom det simulerar den typ av brus som ofta finns i bildsensorer. Det är baserat på en Gaussisk (normal) distribution. Medelvärdet bestämmer den genomsnittliga ljusstyrkan och standardavvikelsen styr intensiteten på bruset. Numpy tillhandahåller `np.random.normal`:
`` `python
Importera numpy som NP
Importera matplotlib.pyplot som plt
bredd, höjd =256, 256
medelvärde =0
stddev =30 # justera för brusnivån
brus =np.random.normal (medelvärde, stddev, storlek =(höjd, bredd)). Astype (np.uint8)
NOUE =NP.CLIP (NOUE, 0, 255) #Sensurvärden ligger inom 0-255 intervall.
plt.imshow (brus, cmap ='grå')
plt.show ()
`` `
* Salt-och-pepparbrus: Denna typ introducerar slumpmässiga svartvita pixlar. Du kan uppnå detta genom att slumpmässigt välja pixlar och ställa in sina värden till 0 (svart) eller 255 (vit).
`` `python
Importera numpy som NP
Importera matplotlib.pyplot som plt
bredd, höjd =256, 256
salt_pepper_ratio =0,1 # procent av de drabbade pixlarna
brus =np.random.choice ([0, 255], storlek =(höjd, bredd), p =[1-salt_pepper_ratio, salt_pepper_ratio])))
plt.imshow (brus, cmap ='grå')
plt.show ()
`` `
2. Använda bildbehandlingsbibliotek: Bibliotek som OpenCV (CV2 i Python) och SCIKIT-IMAGE ger funktioner som kan lägga till brus till bilder direkt, ofta erbjuder mer kontroll och effektivitet.
3. Perlinbrus (för procedurstrukturer): Detta är en typ av gradientbrus som ofta används för att skapa mer naturliga strukturer och mindre granulärt brus. Det är mer komplicerat att implementera från grunden men bibliotek kan hantera det enkelt.
4. Simulera specifika ljudkällor: För mycket realistiska simuleringar kan du behöva modellera specifika bullerkällor som termiskt brus, skottbrus eller kvantiseringsbrus. Detta kräver ofta att förstå de fysiska processerna bakom brusgenerationen.
Lägga till brus till en befintlig bild:
När du genererar bruset lägger du till det till din ursprungliga bild av elementmässigt tillägg eller andra operationer. Kom ihåg att justera skalan på ditt brus för att undvika klippning (värden som överskrider det giltiga intervallet, som 0-255 för 8-bitars bilder).
Valet av metod beror på din specifika applikation. För enkla simuleringar räcker slumptalsgenerering. För mer avancerade scenarier eller realistiskt brus rekommenderas att använda bildbehandlingsbibliotek eller mer sofistikerade brusgenereringstekniker. Kom ihåg att hantera potentiella pixelvärden utanför området efter att ha lagt till bruset.