Freigeben über


DML_RESAMPLE3_OPERATOR_DESC Struktur (directml.h)

Resamples Elemente von der Quelle an den Ziel-Tensor, wobei gegebenenfalls antialisiert wird, wobei die Skalierungsfaktoren zum Berechnen der Ziel-Tensor-Größe verwendet werden. Sie können einen linearen oder nächsten Benachbarten Interpolationsmodus verwenden. Der Operator unterstützt die Interpolation über mehrere Dimensionen hinweg, nicht nur 2D. Sie können also die gleiche räumliche Größe beibehalten, aber über Kanäle oder batchweise interpolieren. Die Beziehung zwischen den Eingabe- und Ausgabekoordinaten lautet wie folgt:

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

Wichtig

Diese API ist als Teil des eigenständigen redistributable-Pakets von DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.15.1 und höher). Siehe auch den DirectML-Versionsverlauf.

Syntax

struct DML_RESAMPLE3_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* OutputTensor;
    DML_INTERPOLATION_MODE InterpolationMode;
    DML_AXIS_DIRECTION RoundingDirection;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const FLOAT* Scales;
    _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
    _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
    BOOL Antialiased;
};

Angehörige

InputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor, der die Eingabedaten enthält.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor, in den die Ausgabedaten geschrieben werden sollen.

InterpolationMode

Typ: DML_INTERPOLATION_MODE

Dieses Feld bestimmt die Art der Interpolation, die zum Auswählen von Ausgabepixeln verwendet wird.

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Verwendet den nächstgelegenen Nachbaralgorithmus, der das eingabeelement am nächsten zum entsprechenden Pixeloffset für jedes Ausgabeelement auswäht.

  • DML_INTERPOLATION_MODE_LINEAR. Verwendet den linearen Interpolationsalgorithmus , der das Ausgabeelement berechnet, indem der gewichtete Mittelwert der beiden nächsten benachbarten Eingabeelemente pro Dimension berechnet wird. Das Resampling wird bis zu vier Dimensionen (quadrilinear) unterstützt, wobei der gewichtete Mittelwert für jedes Ausgabeelement insgesamt sechszehn Eingabeelemente berechnet wird.

RoundingDirection

Typ: DML_AXIS_DIRECTION

Die Richtung, die auf jeder Achse gerundet werden soll, wenn Bruchkoordinaten zurück zu Eingabepixeln zugeordnet werden. Da die bilineare Interpolation trotzdem Bruchkoordinaten interpoliert, wirkt sich dies nur auf DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR aus.

  • DML_AXIS_DIRECTION_INCREASING. Runden Bruchkoordinaten zur Erhöhung der Achsenwerte (Ceil).

  • DML_AXIS_DIRECTION_DECREASING. Abgerundete Bruchkoordinaten in Richtung abnehmender Achsenwerte (Boden).

DimensionCount

Typ: UINT

Die Anzahl der Elemente in den Arrays Scales, InputPixelOffsets und OutputPixelOffsets . Dieser Wert muss mit der Dimensionsanzahl von InputTensor und OutputTensor übereinstimmen.

Scales

Typ: _Field_size_(DimensionCount) const FLOAT*

Die Skalierungen, die beim Resampling der Eingabe angewendet werden sollen, wobei > 1 skaliert wird, um das Bild nach oben zu skalieren, und skaliert < 1 das Bild für diese Dimension herabskalieren. Beachten Sie, dass die Skalierungen nicht genau OutputSize / InputSizesein müssen. Wenn die Eingabe nach der Skalierung größer als die Ausgabegrenze ist, wird sie auf die Ausgabegröße zugeschnitten. Wenn die Eingabe nach der Skalierung dagegen kleiner als die Ausgabegrenze ist, werden die Ausgaberänder eingeklemmt.

InputPixelOffsets

Typ: _Field_size_(DimensionCount) const FLOAT*

Die Offsets, die vor dem Resampling auf die Eingabepixel angewendet werden sollen. Wenn dieser Wert 0 ist, wird die obere linke Ecke des Pixels anstelle der Mitte verwendet, die normalerweise nicht das erwartete Ergebnis zurückgibt. Um das Bild mithilfe der Mitte der Pixel neu zu sortieren und das gleiche Verhalten wie DML_RESAMPLE_OPERATOR_DESCzu erhalten, muss dieser Wert 0,5 sein.

OutputPixelOffsets

Typ: _Field_size_(DimensionCount) const FLOAT*

Die Offsets, die nach dem Resampling auf die Ausgabepixel angewendet werden sollen. Wenn dieser Wert 0 ist, wird die obere linke Ecke des Pixels anstelle der Mitte verwendet, die normalerweise nicht das erwartete Ergebnis zurückgibt. Um das Bild mithilfe der Mitte der Pixel neu zu sortieren und das gleiche Verhalten wie DML_RESAMPLE_OPERATOR_DESC zu erhalten, muss dieser Wert -0,5 sein.

Antialiased

Typ: BOOL

Antialiasing wird erreicht, indem der Resampling-Filter um einen Faktor max(1, 1 / scale)gestreckt wird, was bedeutet, dass beim Heruntersampling mehr Eingabepixel zu einem Ausgabepixel beitragen.

Dies tritt auf, wenn dieses Flag auf TRUEfestgelegt ist und die folgenden Bedingungen vorausgesetzt wird:

  • InterpolationMode ist DML_INTERPOLATION_MODE_LINEAR
  • 1/Skalierungen > 2

Anschließend verwendet dieser Operator beim Herunterskalieren einen Antialiasingfilter.

Bemerkungen

Wenn Antialiased ist false, entspricht dieser Operator DML_RESAMPLE2_OPERATOR_DESC.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_6_4 eingeführt.

Tensoreinschränkungen

"InputTensor " und " OutputTensor " müssen denselben Datentyp und "DimensionCount" aufweisen.

Tensorunterstützung

Tensor Art Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 4 FLOAT32, FLOAT16, INT8, UINT8
AusgangTensor Ausgabe 1 bis 4 FLOAT32, FLOAT16, INT8, UINT8

Anforderungen

   
Kopfball directml.h