DML_RESAMPLE1_OPERATOR_DESC-Struktur (directml.h)
Setzt Elemente aus der Quelle in den Ziel tensor neu, wobei die Skalierungsfaktoren verwendet werden, um die Größe des Ziel-Tensors zu berechnen. Sie können einen linearen oder nächsten Interpolationsmodus verwenden. Der Operator unterstützt die Interpolation über mehrere Dimensionen hinweg, nicht nur 2D. So können Sie die gleiche räumliche Größe beibehalten, aber kanalübergreifend oder batchübergreifend interpolieren. Die Beziehung zwischen den Eingabe- und Ausgabekoordinaten sieht wie folgt aus.
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
Syntax
struct DML_RESAMPLE1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_INTERPOLATION_MODE InterpolationMode;
UINT DimensionCount;
const FLOAT *Scales;
const FLOAT *InputPixelOffsets;
const FLOAT *OutputPixelOffsets;
};
Member
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 Nearest Neighbor-Algorithmus , der das Eingabeelement auswäht, das dem entsprechenden Pixelmittelpunkt für jedes Ausgabeelement am nächsten liegt.
DML_INTERPOLATION_MODE_LINEAR. Verwendet den linearen Interpolationsalgorithmus , der das Ausgabeelement berechnet, indem der gewichtete Durchschnitt der 2 nächsten benachbarten Eingabeelemente pro Dimension berechnet wird. Das Resampling wird bis zu vier Dimensionen (quadrilinear) unterstützt, wobei der gewichtete Durchschnitt aus insgesamt 16 Eingabeelementen für jedes Ausgabeelement berechnet wird.
DimensionCount
Typ: UINT
Die Anzahl der Werte in den Arrays, auf die Scales, InputPixelOffsets und OutputPixelOffsets zeigen. Dieser Wert muss mit der Dimensionsanzahl von InputTensor und OutputTensor übereinstimmen.
Scales
Typ: _Field_size_(DimensionCount) const FLOAT*
Die Skalierungen, die beim Erneutsampling der Eingabe angewendet werden sollen, wobei > 1 das Bild hochskaliert und 1 das Bild für diese Dimension herunterskaliert < wird. Beachten Sie, dass die Skalierungen nicht genau OutputSize / InputSize
sein müssen. Wenn die Eingabe nach der Skalierung größer als die ausgabegebundene ist, wird sie auf die Ausgabegröße zugeschnitten. Wenn die Eingabe nach der Skalierung dagegen kleiner als die ausgabegebundene ist, werden die Ausgaberänder eingespannt.
InputPixelOffsets
Typ: _Field_size_(DimensionCount) const FLOAT*
Die Offsets, die vor dem Resampling auf die Eingabepixel angewendet werden sollen. Wenn dieser Wert ist 0
, wird die obere linke Ecke des Pixels anstelle der Mitte verwendet, was normalerweise nicht das erwartete Ergebnis ergibt. Um das Bild mithilfe der Mitte der Pixel neu zuzustempeln und das gleiche Verhalten wie DML_RESAMPLE_OPERATOR_DESC zu erhalten, muss dieser Wert lauten 0.5
.
OutputPixelOffsets
Typ: _Field_size_(DimensionCount) const FLOAT*
Die Offsets, die nach dem Resampling auf die Ausgabepixel angewendet werden sollen. Wenn dieser Wert ist 0
, wird die obere linke Ecke des Pixels anstelle der Mitte verwendet, was normalerweise nicht das erwartete Ergebnis ergibt. Um das Bild mithilfe der Mitte der Pixel neu zuzustempeln und das gleiche Verhalten wie DML_RESAMPLE_OPERATOR_DESC zu erhalten, muss dieser Wert lauten -0.5
.
Hinweise
Wenn die InputPixelOffsets auf 0,5 und die OutputPixelOffsets auf -0,5 festgelegt sind, entspricht dieser Operator DML_RESAMPLE_OPERATOR_DESC.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_1
eingeführt.
Tensoreinschränkungen
InputTensor und OutputTensor müssen über denselben DataType und DimensionCount verfügen.
Tensorunterstützung
DML_FEATURE_LEVEL_6_2 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 4 | FLOAT32, FLOAT16, INT8, UINT8 |
OutputTensor | Ausgabe | 1 bis 4 | FLOAT32, FLOAT16, INT8, UINT8 |
DML_FEATURE_LEVEL_5_1 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 4 | FLOAT32, FLOAT16 |
OutputTensor | Ausgabe | 1 bis 4 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_2_1 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 | FLOAT32, FLOAT16 |
OutputTensor | Ausgabe | 4 | FLOAT32, FLOAT16 |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |