Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 |