Delen via


DML_RESAMPLE2_OPERATOR_DESC structuur (directml.h)

Wijzigt elementen van de bron naar de doeltensor met behulp van de schaalfactoren om de grootte van de doeltensor te berekenen. U kunt een lineaire of dichtstbijzijnde interpolatiemodus voor buren gebruiken. De operator ondersteunt interpolatie in meerdere dimensies, niet alleen 2D. U kunt dus dezelfde ruimtelijke grootte behouden, maar interpoleren tussen kanalen of in batches. De relatie tussen de invoer- en uitvoercoördinaten is het volgende:

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

Belangrijk

Deze API is beschikbaar als onderdeel van het zelfstandige redistributable-pakket van DirectML (zie Microsoft.AI.DirectML versie 1.9 en hoger). Zie ook de Versiegeschiedenis van DirectML.

Syntaxis

struct DML_RESAMPLE2_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;
};

Leden

InputTensor

Type: const DML_TENSOR_DESC*

De tensor die de invoergegevens bevat.

OutputTensor

Type: const DML_TENSOR_DESC*

De tensor waar de uitvoergegevens naar moeten worden geschreven.

InterpolationMode

Soort: DML_INTERPOLATION_MODE

Dit veld bepaalt het type interpolatie dat wordt gebruikt om uitvoer pixels te kiezen.

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Maakt gebruik van het algoritme dichtstbijzijnde buren , dat het invoerelement kiest dat het dichtst bij de bijbehorende pixelverschil voor elk uitvoerelement komt.

  • DML_INTERPOLATION_MODE_LINEAR. Maakt gebruik van het algoritme voor lineaire interpolatie , waarmee het uitvoerelement wordt berekend door het gewogen gemiddelde van de twee dichtstbijzijnde invoerelementen per dimensie te berekenen. Resampling wordt ondersteund tot maximaal vier dimensies (quadrilinear), waarbij het gewogen gemiddelde wordt berekend op een totaal van zestien invoerelementen voor elk uitvoerelement.

RoundingDirection

Soort: DML_AXIS_DIRECTION

De richting die langs elke as moet worden afgerond bij het toewijzen van breukcoördinaten aan invoer pixels. Aangezien bilineaire interpolatie toch breukcoördinaten interpoleert, is dit alleen van invloed op DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR.

  • DML_AXIS_DIRECTION_INCREASING. Ronde breukcoördinaten voor het verhogen van aswaarden (ceil).

  • DML_AXIS_DIRECTION_DECREASING. Ronde breukcoördinaten naar dalende aswaarden (vloer).

DimensionCount

Soort: UINT

Het aantal elementen in de matrices Scales, Input PixelOffsets en Output PixelOffsets . Deze waarde moet overeenkomen met het dimensieaantal InputTensor en OutputTensor.

Scales

Type: _Field_size_(DimensionCount) const FLOAT*

De schaalaanpassingen die moeten worden toegepast bij het opnieuw uitschalen van de invoer, waarbij > 1 de afbeelding omhoog schaalt en < 1 de afbeelding omlaag schaalt voor die dimensie. Houd er rekening mee dat de schalen niet precies OutputSize / InputSizehoeven te zijn. Als de invoer na schalen groter is dan de uitvoergrens, wordt deze bijgesneden tot de uitvoergrootte. Aan de andere kant, als de invoer na het schalen kleiner is dan de uitvoergrens, worden de uitvoerranden vastgeklemd.

InputPixelOffsets

Type: _Field_size_(DimensionCount) const FLOAT*

De offsets die moeten worden toegepast op de invoer pixels voordat de nieuweampling wordt gewijzigd. Wanneer deze waarde 0 is, wordt de linkerbovenhoek van de pixel gebruikt in plaats van het midden, wat meestal niet het verwachte resultaat oplevert. Als u de afbeelding opnieuw wiltsampleen met behulp van het midden van de pixels en hetzelfde gedrag wilt krijgen als DML_RESAMPLE_OPERATOR_DESC, moet deze waarde 0,5 zijn.

OutputPixelOffsets

Type: _Field_size_(DimensionCount) const FLOAT*

De offsets die moeten worden toegepast op de uitvoer pixels na het opnieuwamplen. Wanneer deze waarde 0 is, wordt de linkerbovenhoek van de pixel gebruikt in plaats van het midden, wat meestal niet het verwachte resultaat oplevert. Als u de afbeelding opnieuw wilt wijzigen met behulp van het midden van de pixels en hetzelfde gedrag wilt krijgen als DML_RESAMPLE_OPERATOR_DESC, moet deze waarde -0,5 zijn.

Opmerkingen

Deze operator is gelijk aan DML_RESAMPLE1_OPERATOR_DESC wanneer InterpolationMode is ingesteld op DML_INTERPOLATION_MODE_LINEAR; of wanneer InterpolationMode is ingesteld op DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR en RoundingDirection op DML_AXIS_DIRECTION_DECREASING, en Output PixelOffsets worden een extra -0,5 aangepast.

Beschikbaarheid

Deze operator is geïntroduceerd in DML_FEATURE_LEVEL_5_1.

Tensor-beperkingen

InputTensor en OutputTensor moeten hetzelfde DataType en DimensionCount hebben.

Ondersteuning voor Tensor

DML_FEATURE_LEVEL_6_2 en hoger

Tensor Soort Ondersteunde dimensieaantallen Ondersteunde gegevenstypen
Invoer Tensor Invoer 1 tot en met 4 FLOAT32, FLOAT16, INT8, UINT8
Uitvoer Tensor Uitvoer 1 tot en met 4 FLOAT32, FLOAT16, INT8, UINT8

DML_FEATURE_LEVEL_5_1 en hoger

Tensor Soort Ondersteunde dimensieaantallen Ondersteunde gegevenstypen
Invoer Tensor Invoer 1 tot en met 4 FLOAT32, FLOAT16
Uitvoer Tensor Uitvoer 1 tot en met 4 FLOAT32, FLOAT16

Behoeften

   
Rubriek directml.h