add_noise_distributionT_add_noise_distributionAddNoiseDistributionAddNoiseDistributionadd_noise_distribution (Operator)

Name

add_noise_distributionT_add_noise_distributionAddNoiseDistributionAddNoiseDistributionadd_noise_distribution — Synthetisches Verrauschen eines Bildes.

Signatur

add_noise_distribution(Image : ImageNoise : Distribution : )

Herror T_add_noise_distribution(const Hobject Image, Hobject* ImageNoise, const Htuple Distribution)

void AddNoiseDistribution(const HObject& Image, HObject* ImageNoise, const HTuple& Distribution)

HImage HImage::AddNoiseDistribution(const HTuple& Distribution) const

static void HOperatorSet.AddNoiseDistribution(HObject image, out HObject imageNoise, HTuple distribution)

HImage HImage.AddNoiseDistribution(HTuple distribution)

def add_noise_distribution(image: HObject, distribution: Sequence[float]) -> HObject

Beschreibung

add_noise_distributionadd_noise_distributionAddNoiseDistributionAddNoiseDistributionadd_noise_distribution Überlagert das Eingabebild (ImageImageImageimageimage) mit Rauschen, das der Verteilung von DistributionDistributionDistributiondistributiondistribution entspricht. Es erfolgt ein Clipping der resultierenden Grauwerte auf den Bereich des entsprechenden Pixeltyps.

Die Verteilung wird in einem Tupel der Länge 513 übergeben. Die einzelnen Werte dieses Tupels legen die Häufigkeit der Pixel fest, die mit einer bestimmten Amplitude verrauscht werden. Diese Amplitude ist durch die Position des Häufigkeitswertes im Tupel festgelegt. Der mittlere Wert, d.h., der Wert an der Position 256 des Tupels legt die Häufigkeit der Pixel fest, deren Grauwert nicht verändert wird. Der Wert an der Position 255 des Tupels legt die Häufigkeit der Pixel fest, deren Grauwert um 1 verringert wird. Der Wert an der Position 254 legt die Häufigkeit der Pixel fest, deren Grauwert um 2 verringert wird, usw. Analog hierzu legt der Wert an der Position 257 die Häufigkeit der Pixel fest, deren Grauwert um 1 erhöht wird.

Wenn maximal ein Wert an einer Position kleiner als 256 und maximal ein Wert an einer Position größer als 256 ungleich Null ist, so stellt die Verteilung DistributionDistributionDistributiondistributiondistribution eine Salz und Pfeffer-Verteilung dar. Im Falle einer Salz und Pfeffer-Verteilung werden die verrauschten Pixel auf den minimalen (Pfeffer) bzw. maximalen (Salz) Grauwert gesetzt der in dem Ausgabebild ImageNoiseImageNoiseImageNoiseimageNoiseimage_noise darstellbar ist, wenn die Häufigkeit von Pfeffer durch den Wert an der Position 0 bzw. die Häufigkeit von Salz durch den Wert an der Position 512 im Tupel definiert ist.

Die Verrauschung wird mit Hilfe der C-Funktion „drand48()“ generiert. Für Informationen zu den verwendeten Seeds siehe den Parameter 'seed_rand'"seed_rand""seed_rand""seed_rand""seed_rand" in set_systemset_systemSetSystemSetSystemset_system.

Ausführungsinformationen

Parameter

ImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject (byte / int2)

Bild, das verrauscht werden soll.

ImageNoiseImageNoiseImageNoiseimageNoiseimage_noise (output_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject * (byte / int2)

Verrauschtes Bild.

Parameteranzahl: ImageNoise == Image

DistributionDistributionDistributiondistributiondistribution (input_control)  distribution.values-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Rauschverteilung.

Parameteranzahl: 513

Beispiel (HDevelop)

read_image(Image,'mreut')
dev_display (Image)
sp_distribution(30,30,Dist)
add_noise_distribution(Image,ImageNoise,Dist)
dev_display (ImageNoise)

Beispiel (C)

read_image(&Image,"fabrik");
disp_image(Image,WindowHandle);
set_d(PerSalt,30.0,0);
set_d(PerPepper,30.0,0);
T_sp_distribution(PerSalt,PerPepper,&Dist);
T_add_noise_distribution(Image,&ImageNoise,Dist);
disp_image(ImageNoise,WindowHandle);

Beispiel (HDevelop)

read_image(Image,'mreut')
dev_display (Image)
sp_distribution(30,30,Dist)
add_noise_distribution(Image,ImageNoise,Dist)
dev_display (ImageNoise)

Beispiel (HDevelop)

read_image(Image,'mreut')
dev_display (Image)
sp_distribution(30,30,Dist)
add_noise_distribution(Image,ImageNoise,Dist)
dev_display (ImageNoise)

Ergebnis

add_noise_distributionadd_noise_distributionAddNoiseDistributionAddNoiseDistributionadd_noise_distribution liefert den Wert 2 ( H_MSG_TRUE) , falls die Parameter korrekt sind. Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

gauss_distributiongauss_distributionGaussDistributionGaussDistributiongauss_distribution, sp_distributionsp_distributionSpDistributionSpDistributionsp_distribution, noise_distribution_meannoise_distribution_meanNoiseDistributionMeanNoiseDistributionMeannoise_distribution_mean

Alternativen

add_noise_whiteadd_noise_whiteAddNoiseWhiteAddNoiseWhiteadd_noise_white

Siehe auch

sp_distributionsp_distributionSpDistributionSpDistributionsp_distribution, gauss_distributiongauss_distributionGaussDistributionGaussDistributiongauss_distribution, noise_distribution_meannoise_distribution_meanNoiseDistributionMeanNoiseDistributionMeannoise_distribution_mean, add_noise_whiteadd_noise_whiteAddNoiseWhiteAddNoiseWhiteadd_noise_white

Modul

Foundation