Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
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 |