Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ускорьтесь Ссылка Платформы vImage Преобразовывают Ссылку

Опции
Развертывание Target:

На этой странице
Язык:

vImage Преобразовывают Ссылку

Функции трансформации изменяют значения пикселей в изображении. В отличие от сверток, функции трансформации не зависят от значений соседних пикселей. vImage функции трансформации попадают в четыре широких категории:

  • Функции гамма-коррекции исправляют профиль яркости изображения путем умножения каждого пикселя на значение функции. Гамма-коррекция подготавливает изображение к дисплею или распечатывающий на определенном устройстве.

  • Функции таблицы поиска походят на функции кусочного многочлена, но вместо того, чтобы применить полиномиал они используют таблицу поиска, которую Вы предоставляете.

  • Функции умножения матриц имеют множество использования, например, преобразовать между цветовыми пространствами (RGB и YUV, например), изменить цветное изображение на полутоновое, и для “скручивания цвета”.

  • Кусочные функции подобны функциям гамма-коррекции, но вместо того, чтобы применить предопределенную гамма-функцию они применяют один или несколько полиномиалов, которые Вы предоставляете. Число полиномиалов должно быть целочисленным питанием 2, и они должны все иметь тот же порядок.

Функции трансформации используют буферную структуру vImage (vImage_Buffer— см. vImage Ссылку Типов данных и Констант) получить и предоставить данные изображения. Этот буфер содержит указатель на данные изображения, высоту и ширину (в пикселях) данных изображения и числа байтов строки. Вы фактически передаете указатель на буферную структуру vImage.

Некоторая трансформация функционирует “работа на месте”. Т.е. исходные и конечные изображения могут занять ту же память, если они являются строго выровненным пикселем для пикселя. Для них Вы банка может обеспечить указатель на ту же буферную структуру vImage для одного из исходных изображений и конечного изображения.

Функции

  • Использует таблицу поиска для преобразования изображения в формат Planar8 к изображению в формате PlanarF.

    Объявление

    Swift

    func vImageLookupTable_Planar8toPlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ table: UnsafePointer<Pixel_F>, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageLookupTable_Planar8toPlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const Pixel_F table[256], vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    table

    Таблица поиска, содержащая 256 значений.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Для каждого пикселя 8-разрядного значения из источника изображение Planar8 используется в качестве индекса для получения значения с плавающей точкой от таблицы. Это значение используется в качестве соответствующего пикселя в изображении результата PlanarF.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Использует таблицу поиска для преобразования изображения в формат PlanarF к изображению в формате Planar8.

    Объявление

    Swift

    func vImageLookupTable_PlanarFtoPlanar8(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ table: UnsafePointer<Pixel_8>, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageLookupTable_PlanarFtoPlanar8 ( const vImage_Buffer *src, const vImage_Buffer *dest, const Pixel_8 table[4096], vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    table

    Таблица поиска, содержащая 4 096 значений.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Таблица содержит 4 096 значений; это вводится с целочисленным индексом, полученным из пиксельного значения в исходном изображении, для поиска 8-разрядного значения для конечного изображения.

    Для каждого пикселя значения с плавающей точкой из источника изображение PlanarF сначала отсекается к диапазону 0.0... 1.0, и затем преобразованный в целое число в диапазоне 0... 4095. Вычисление преобразования эквивалентно

    • if (realValue < 0.0f) realValue = 0.0f;
    • if (realValue > 1.0f) realValue = 1.0f;
    • intValue = (int)(realValue * 4095.0f + 0.5f);

    Это целое число используется в качестве индекса для получения 8-разрядного значения от таблицы. Это значение используется в качестве соответствующего пикселя в изображении результата Planar8.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Использует таблицу поиска для преобразования изображения в формат PlanarF к изображению в формате PlanarF.

    Объявление

    Swift

    func vImageInterpolatedLookupTable_PlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ table: UnsafePointer<Pixel_F>, _ tableEntries: vImagePixelCount, _ maxFloat: Float, _ minFloat: Float, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageInterpolatedLookupTable_PlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const Pixel_F *table, vImagePixelCount tableEntries, float maxFloat, float minFloat, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    table

    Таблица поиска значений с плавающей точкой.

    tableEntries

    Значение типа vImagePixelCount, предоставление числа значений в массиве.

    maxFloat

    Значение типа float.

    minFloat

    Значение типа float.

    flags

    Опции использовать при выполнении трансформации. Передача kvImageDoNotTile если Вы планируете выполнить свою собственную многопоточность мозаичного размещения или использования.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Это будет работать на месте. Таблица содержит произвольное число значений; это вводится с индексом, интерполированным от значения из исходного изображения, для поиска значения с плавающей точкой для конечного изображения.

    Входной пиксель сначала отсекается к диапазону minFloat ... maxFloat. Результат тогда вычисляется как

    • float clippedPixel =MAX(MIN(src_pixel, maxFloat), minFloat);
    • float fIndex = (float) (tableEntries - 1) * (clippedPixel - minFloat)
    • / (maxFloat - minFloat);
    • float fract = fIndex - floor(fIndex);
    • unsigned long i = fIndex;
    • float result = table[i] * (1.0f - fract) + table[i + 1] * fract;

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет ряд кусочных многочленов к изображению в формате PlanarF.

    Объявление

    Swift

    func vImagePiecewisePolynomial_PlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ coefficients: UnsafeMutablePointer<UnsafePointer<Float>>, _ boundaries: UnsafePointer<Float>, _ order: UInt32, _ log2segments: UInt32, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImagePiecewisePolynomial_PlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const float **coefficients, const float *boundaries, uint32_t order, uint32_t log2segments, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    coefficients

    Указатель на массив полиномиальных массивов коэффициентов. Каждый полиномиальный массив коэффициентов содержит коэффициенты для одного полиномиала. Обратите внимание на то, что полиномиал порядка R имеет коэффициенты R+1. Все полиномиальные массивы коэффициентов должны быть тем же размером, R+1, и в каждом массиве коэффициенты должны быть упорядочены от срока 0th-порядка до срока самого высокого порядка.

    boundaries

    Указатель на массив граничных значений, в увеличивающемся порядке, для разделения смежных диапазонов пиксельных значений. Первое граничное значение является самым низким в диапазоне; входные значения ниже, чем это отсекаются к этому значению. Последнее граничное значение является самым высоким в диапазоне; входные значения выше, чем это отсекаются к этому значению. Граничные значения между первым и последним отдельным поддиапазоны друг от друга.

    log2segments

    Число полиномиалов, представленных как основа 2 логарифма. При передаче нецелого числа power-two число полиномиалов (например, 5), необходимо окружить к следующему целочисленному питанию 2 (для примера 5, который был бы 8), и просто повторите последний полиномиал надлежащее число раз.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Можно приблизить много различных функций исправления путем тщательного выбора полиномиалов и диапазонов входных значений, на которые они воздействуют. Число полиномиалов должно быть неотрицательным целочисленным питанием 2.

    Предположим, что Вы хотите использовать полиномиалы N порядка R обработать непрерывные диапазоны N пиксельных значений. Для каждого пикселя в изображении диапазон применимых значений разделен на сегменты значениями, переданными в boundaries массив. Каждый сегмент обрабатывается соответствующим полиномиалом. С тех пор существуют полиномиалы N, тогда должны быть сегменты N, таким образом, необходимо предоставить границы N+1.

    Необходимо упорядочить границы путем увеличивания стоимости. ith сегмент является набором пиксельных значений, падающих в диапазоне:

    • boundary[i] <= value < boundary{i+1}

    где я колеблюсь от 0 до N. Значения в этом сегменте обрабатываются i-th полиномиалом.

    С точки зрения производительности это стоит намного больше для разрешения дополнительных полиномиалов, чем работать с полиномиалами высшего порядка. Вы обычно достигаете лучшей производительности с одним полиномиалом 9-го порядка, покрывающим целый диапазон значений, которыми Вы интересуетесь, чем со многими полиномиалами более низкоуровневыми, покрывающими кусочный диапазон.

    Эта функция использует одинарную точность арифметика с плавающей точкой. В результате полиномиалы с большими старшими коэффициентами могут вызвать значительную погрешность округления.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет ряд кусочных многочленов для преобразования изображения в формат Planar8 к изображению в формате PlanarF.

    Объявление

    Swift

    func vImagePiecewisePolynomial_Planar8toPlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ coefficients: UnsafeMutablePointer<UnsafePointer<Float>>, _ boundaries: UnsafePointer<Float>, _ order: UInt32, _ log2segments: UInt32, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImagePiecewisePolynomial_Planar8toPlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const float **coefficients, const float *boundaries, uint32_t order, uint32_t log2segments, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    coefficients

    Указатель на массив полиномиальных массивов коэффициентов. Каждый полиномиальный массив коэффициентов содержит коэффициенты для одного полиномиала. Обратите внимание на то, что полиномиал порядка R имеет коэффициенты R+1. Все полиномиальные массивы коэффициентов должны быть тем же размером, R+1, и в каждом массиве коэффициенты должны быть упорядочены от срока 0th-порядка до срока самого высокого порядка.

    boundaries

    Указатель на массив граничных значений, в увеличивающемся порядке, для разделения смежных диапазонов пиксельных значений. Первое граничное значение является самым низким в диапазоне; входные значения ниже, чем это отсекаются к этому значению. Последнее граничное значение является самым высоким в диапазоне; входные значения выше, чем это отсекаются к этому значению. Граничные значения между первым и последним отдельным поддиапазоны друг от друга.

    log2segments

    Число полиномиалов, представленных как основа 2 логарифма. При передаче нецелого числа power-two число полиномиалов (например, 5), необходимо окружить к следующему целочисленному питанию 2 (для примера 5, который был бы 8), и просто повторите последний полиномиал надлежащее число раз.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Можно приблизить много различных функций исправления путем тщательного выбора полиномиалов и диапазонов входных значений, на которые они воздействуют. Число полиномиалов должно быть неотрицательным целочисленным питанием 2.

    Предположим, что Вы хотите использовать полиномиалы N порядка R обработать непрерывные диапазоны N пиксельных значений. Для каждого пикселя в изображении диапазон применимых значений разделен на сегменты значениями, переданными в boundaries массив. Каждый сегмент обрабатывается соответствующим полиномиалом. С тех пор существуют полиномиалы N, тогда должны быть сегменты N, таким образом, необходимо предоставить границы N+1.

    Необходимо упорядочить границы путем увеличивания стоимости. ith сегмент является набором пиксельных значений, падающих в диапазоне:

    • boundary[i] <= value < boundary{i+1}

    где я колеблюсь от 0 до N. Значения в этом сегменте обрабатываются i-th полиномиалом.

    С точки зрения производительности это стоит намного больше для разрешения дополнительных полиномиалов, чем работать с полиномиалами высшего порядка. Вы обычно достигаете лучшей производительности с одним полиномиалом 9-го порядка, покрывающим целый диапазон значений, которыми Вы интересуетесь, чем со многими полиномиалами более низкоуровневыми, покрывающими кусочный диапазон.

    Эта функция использует одинарную точность арифметика с плавающей точкой. В результате полиномиалы с большими старшими коэффициентами могут вызвать значительную погрешность округления.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет ряд кусочных многочленов для преобразования изображения в формат PlanarF к изображению в формате Planar8.

    Объявление

    Swift

    func vImagePiecewisePolynomial_PlanarFtoPlanar8(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ coefficients: UnsafeMutablePointer<UnsafePointer<Float>>, _ boundaries: UnsafePointer<Float>, _ order: UInt32, _ log2segments: UInt32, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImagePiecewisePolynomial_PlanarFtoPlanar8 ( const vImage_Buffer *src, const vImage_Buffer *dest, const float **coefficients, const float *boundaries, uint32_t order, uint32_t log2segments, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    coefficients

    Указатель на массив полиномиальных массивов коэффициентов. Каждый полиномиальный массив коэффициентов содержит коэффициенты для одного полиномиала. Обратите внимание на то, что полиномиал порядка R имеет коэффициенты R+1. Все полиномиальные массивы коэффициентов должны быть тем же размером, R+1, и в каждом массиве коэффициенты должны быть упорядочены от срока 0th-порядка до срока самого высокого порядка.

    boundaries

    Указатель на массив граничных значений, в увеличивающемся порядке, для разделения смежных диапазонов пиксельных значений. Первое граничное значение является самым низким в диапазоне; входные значения ниже, чем это отсекаются к этому значению. Последнее граничное значение является самым высоким в диапазоне; входные значения выше, чем это отсекаются к этому значению. Граничные значения между первым и последним отдельным поддиапазоны друг от друга.

    log2segments

    Число полиномиалов, представленных как основа 2 логарифма. При передаче нецелого числа power-two число полиномиалов (например, 5), необходимо окружить к следующему целочисленному питанию 2 (для примера 5, который был бы 8), и просто повторите последний полиномиал надлежащее число раз.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Можно приблизить много различных функций исправления путем тщательного выбора полиномиалов и диапазонов входных значений, на которые они воздействуют. Число полиномиалов должно быть неотрицательным целочисленным питанием 2.

    Предположим, что Вы хотите использовать полиномиалы N порядка R обработать непрерывные диапазоны N пиксельных значений. Для каждого пикселя в изображении диапазон применимых значений разделен на сегменты значениями, переданными в boundaries массив. Каждый сегмент обрабатывается соответствующим полиномиалом. С тех пор существуют полиномиалы N, тогда должны быть сегменты N, таким образом, необходимо предоставить границы N+1.

    Необходимо упорядочить границы путем увеличивания стоимости. ith сегмент является набором пиксельных значений, падающих в диапазоне:

    • boundary[i] <= value < boundary{i+1}

    где я колеблюсь от 0 до N. Значения в этом сегменте обрабатываются i-th полиномиалом.

    С точки зрения производительности это стоит намного больше для разрешения дополнительных полиномиалов, чем работать с полиномиалами высшего порядка. Вы обычно достигаете лучшей производительности с одним полиномиалом 9-го порядка, покрывающим целый диапазон значений, которыми Вы интересуетесь, чем со многими полиномиалами более низкоуровневыми, покрывающими кусочный диапазон.

    Эта функция использует одинарную точность арифметика с плавающей точкой. В результате полиномиалы с большими старшими коэффициентами могут вызвать значительную погрешность округления.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет кусочное рациональное выражение к изображению в формате PlanarF.

    Объявление

    Swift

    func vImagePiecewiseRational_PlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ topCoefficients: UnsafeMutablePointer<UnsafePointer<Float>>, _ bottomCoefficients: UnsafeMutablePointer<UnsafePointer<Float>>, _ boundaries: UnsafePointer<Float>, _ topOrder: UInt32, _ bottomOrder: UInt32, _ log2segments: UInt32, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImagePiecewiseRational_PlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const float **topCoefficients, const float **bottomCoefficients, const float *boundaries, uint32_t topOrder, uint32_t bottomOrder, uint32_t log2segments, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    topCoefficients

    Массив указателей на полиномиальные массивы коэффициентов массив указателей имеет длину 2log2segments. Каждый массив указал, имеет длину topOrder+1.

    Каждый полиномиальный массив коэффициентов содержит коэффициенты для одного полиномиала. Обратите внимание на то, что полиномиал порядка R имеет коэффициенты R+1. Все полиномиальные массивы коэффициентов должны быть тем же размером, R+1, и в каждом массиве коэффициенты должны быть упорядочены от срока 0th-порядка до срока самого высокого порядка.

    bottomCoefficients

    Массив указателей на полиномиальные массивы коэффициентов массив указателей имеет длину 2log2segments. Каждый массив указал, имеет длину bottomOrder+1.

    Каждый полиномиальный массив коэффициентов содержит коэффициенты для одного полиномиала. Обратите внимание на то, что полиномиал порядка R имеет коэффициенты R+1. Все полиномиальные массивы коэффициентов должны быть тем же размером, R+1, и в каждом массиве коэффициенты должны быть упорядочены от срока 0th-порядка до срока самого высокого порядка. Они не должны быть тем же порядком как главные полиномиалы.

    boundaries

    Массив значений с плавающей точкой с размером (2log2segments) +1, в увеличивающемся порядке, для разделения смежных диапазонов пиксельных значений. Первое граничное значение является самым низким в диапазоне; входные значения ниже, чем это отсекаются к этому значению. Последнее граничное значение является самым высоким в диапазоне; входные значения выше, чем это отсекаются к этому значению. Граничные значения между первым и последним отдельным поддиапазоны друг от друга. Границы должны быть тем же для обоих верхние и нижние полиномиалы.

    topOrder

    Порядок главного полиномиала. Удостоверьтесь, что Вы передаете порядок (т.е. самое высокое питание x), не число coefiicients.

    bottomOrder

    Порядок нижнего полиномиала. Удостоверьтесь, что Вы передаете порядок (т.е. самое высокое питание x), не число coefiicients.

    log2segments

    Число rationals, представленного как основа 2 логарифма. При передаче нецелого числа power-two число рациональных (например, 5), необходимо окружить к следующему целочисленному питанию 2 (для примера 5, который был бы 8), и просто повторите последнее рациональное надлежащее число раз.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Эта функция подобнаvImagePiecewisePolynomial_PlanarF за исключением того, что это оценивает кусочное рациональное выражение в форме:

    image: ../Art/piecewise_rational.pdf

    Каждый полиномиал имеет свой собственный набор коэффициентов и свой собственный полиномиальный порядок. Эти два полиномиала совместно используют тот же набор границ сегмента. Если полиномиалы разделяются тогда, все главные полиномиалы должны иметь тот же порядок, и все нижние полиномиалы должны иметь тот же порядок. Однако независимо от того, разделяется ли полиномиал или нет, главные полиномиалы не должны быть тем же порядком как нижние полиномиалы.

    Эта функция не поставляет IEEE 754 корректное подразделение. Деление не делает вокруг на IEEE 754 текущего режима округления. Это подвергается до 2 ULPs (Модули в Последнем Месте) ошибки. Граничные случаи, включающие denormals, бесконечности, NaNs и деление на нуль, возвращают неопределенные результаты. (Они не откажут, но NaN является вероятным результатом в таких случаях.) Denormals может быть спасен на включенных машинах AltiVec путем выключения бита Не-Java в VSCR, за счет взятия много тысяч исключение ядра цикла каждый раз, когда с нестандартным числом встречаются. Так как можно предсказать заранее, собирается ли данный набор ограниченных полиномиалов встретиться с этими условиями, эта проблема должна быть предотвратимой мудрым выбором полиномиалов. Разработчики, требующие IEEE 754 корректные результаты, должны вызвать полиномиальное средство анализа выше дважды и сделать подразделение сами.

    Приблизительная стоимость оценки рационального (в тех же модулях как полиномиал выше):

    • time = (base cost to touch all the data) + top polynomial order
    • + bottom polynomial order + 4 + 4 * log2segments

    С данными не в кэше, время может существенно отличаться. Для достаточно маленьких полиномиалов стоимость может быть фиксированной стоимостью, зависимый только на том, сколько данных затронуто, а не на полиномиальном порядке.

    Это поведение производительности предоставлено, чтобы помочь Вам оценить компромиссы скорости. Это не гарантируемый. Это подвержено изменениям в будущих версиях операционной системы и может отличаться на различных аппаратных средствах в тех же или различных версиях операционной системы.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Воздействует на ряд 8-разрядных плоскостей исходного изображения, умножая каждый пиксель на предоставленную матрицу для создания ряда 8-разрядных плоскостей конечного изображения.

    Объявление

    Swift

    func vImageMatrixMultiply_Planar8(_ srcs: UnsafeMutablePointer<UnsafePointer<vImage_Buffer>>, _ dests: UnsafeMutablePointer<UnsafePointer<vImage_Buffer>>, _ src_planes: UInt32, _ dest_planes: UInt32, _ matrix: UnsafePointer<Int16>, _ divisor: Int32, _ pre_bias: UnsafePointer<Int16>, _ post_bias: UnsafePointer<Int32>, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageMatrixMultiply_Planar8 ( const vImage_Buffer *srcs[], const vImage_Buffer *dests[], uint32_t src_planes, uint32_t dest_planes, const int16_t matrix[], int32_t divisor, const int16_t *pre_bias, const int32_t *post_bias, vImage_Flags flags );

    Параметры

    srcs

    Указатель на массив vImage буферизует структуры, один буфер для каждой исходной плоскости.

    dests

    Указатель на массив указателей на vImage буферизует структуры данных, одну буферную структуру для каждой целевой плоскости. Вы ответственны за заполнение height, width, и rowBytes поля этих структур, и для выделения буферов данных надлежащего размера. По возврату буферы данных в этих структурах содержат данные конечного изображения для каждой плоскости. Когда Вам больше не нужны буферы данных, необходимо освободить память.

    src_planes

    Число исходных плоскостей.

    dest_planes

    Число целевых плоскостей.

    matrix

    1-мерный массив, значения которого представляют матрицу с размерностями dest_planesxsrc_planes. vImage умножает каждый исходный пиксель на эту матрицу для создания целевого пикселя.

    divisor

    Делитель для нормализации после выполнения умножения матриц.

    pre_bias

    Упакованный массив значений смещения, один для каждой исходной плоскости. vImage добавляет, что надлежащее смещение оценивает каждому исходному значению до умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    post_bias

    Упакованный массив значений смещения, один для каждой целевой плоскости. vImage добавляет, что надлежащее смещение оценивает каждому целевому значению после умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    flags

    Опции использовать при выполнении трансформации. Передача kvImageDoNotTile если Вы планируете выполнить свою собственную многопоточность мозаичного размещения или использования.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Знайте, что используются 32-разрядные аккумуляторы со знаком. Если сумма по какому-либо столбцу матрицы больше, чем ±223, переполнение может произойти. Вообще говоря, это не произойдет, потому что матричные элементы являются 16-разрядными целыми числами, таким образом, потребовалось бы больше чем 256 исходных плоскостей, прежде чем могла возникнуть проблема.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Работает на ряд плоскостей исходного изображения с плавающей точкой, умножая каждый пиксель на предоставленную матрицу для создания ряда плоскостей конечного изображения с плавающей точкой.

    Объявление

    Swift

    func vImageMatrixMultiply_PlanarF(_ srcs: UnsafeMutablePointer<UnsafePointer<vImage_Buffer>>, _ dests: UnsafeMutablePointer<UnsafePointer<vImage_Buffer>>, _ src_planes: UInt32, _ dest_planes: UInt32, _ matrix: UnsafePointer<Float>, _ pre_bias: UnsafePointer<Float>, _ post_bias: UnsafePointer<Float>, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageMatrixMultiply_PlanarF ( const vImage_Buffer *srcs[], const vImage_Buffer *dests[], uint32_t src_planes, uint32_t dest_planes, const float matrix[], const float *pre_bias, const float *post_bias, vImage_Flags flags );

    Параметры

    srcs

    Указатель на массив vImage буферизует структуры, один буфер для каждой исходной плоскости.

    dests

    Указатель на массив указателей на vImage буферизует структуры данных, одну буферную структуру для каждой целевой плоскости. Вы ответственны за заполнение height, width, и rowBytes поля этих структур, и для выделения буферов данных надлежащего размера. По возврату буферы данных в этих структурах содержат данные конечного изображения для каждой плоскости. Когда Вам больше не нужны буферы данных, необходимо освободить память.

    src_planes

    Число исходных плоскостей.

    dest_planes

    Число целевых плоскостей.

    matrix

    1-мерный массив, значения которого представляют матрицу с размерностями dest_planesxsrc_planes. vImage умножает каждый исходный пиксель на эту матрицу для создания целевого пикселя.

    pre_bias

    Упакованный массив значений смещения, один для каждой исходной плоскости. vImage добавляет, что надлежащее смещение оценивает каждому исходному значению до умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    post_bias

    Упакованный массив значений смещения, один для каждой целевой плоскости. vImage добавляет, что надлежащее смещение оценивает каждому целевому значению после умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Работа совпадает сvImageMatrixMultiply_Planar8 за исключением того, что значения с плавающей точкой используются и нет никакого делителя.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Работает на чередованное 8-разрядное исходное изображение, умножая каждый пиксель на предоставленную матрицу для создания чередованного 8-разрядного конечного изображения.

    Объявление

    Swift

    func vImageMatrixMultiply_ARGB8888(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ matrix: UnsafePointer<Int16>, _ divisor: Int32, _ pre_bias: UnsafePointer<Int16>, _ post_bias: UnsafePointer<Int32>, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageMatrixMultiply_ARGB8888 ( const vImage_Buffer *src, const vImage_Buffer *dest, const int16_t matrix[16], int32_t divisor, const int16_t *pre_bias, const int32_t *post_bias, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    matrix

    1-мерный массив, значения которого представляют 4x4 матрицы. vImage умножает каждый исходный пиксель на эту матрицу для создания целевого пикселя.

    divisor

    Делитель для нормализации после выполнения умножения матриц.

    pre_bias

    Упакованный массив значений смещения, один для каждой исходной плоскости. vImage добавляет, что надлежащее смещение оценивает каждому исходному значению до умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    post_bias

    Упакованный массив значений смещения, один для каждой целевой плоскости. vImage добавляет, что надлежащее смещение оценивает каждому целевому значению после умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Знайте, что используются 32-разрядные аккумуляторы со знаком. Если сумма по какому-либо столбцу матрицы больше, чем ±223, переполнение может произойти. Вообще говоря, это не произойдет, потому что матричные элементы являются 16-разрядными целыми числами, таким образом, потребовалось бы больше чем 256 исходных плоскостей, прежде чем могла возникнуть проблема.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Работает на чередованное исходное изображение с плавающей точкой, умножая каждый пиксель на предоставленную матрицу для создания чередованного конечного изображения с плавающей точкой.

    Объявление

    Swift

    func vImageMatrixMultiply_ARGBFFFF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ matrix: UnsafePointer<Float>, _ pre_bias: UnsafePointer<Float>, _ post_bias: UnsafePointer<Float>, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageMatrixMultiply_ARGBFFFF ( const vImage_Buffer *src, const vImage_Buffer *dest, const float matrix[16], const float *pre_bias, const float *post_bias, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    matrix

    1-мерный массив, значения которого представляют 4x4 матрицы. vImage умножает каждый исходный пиксель на эту матрицу для создания целевого пикселя.

    pre_bias

    Упакованный массив значений смещения, один для каждой исходной плоскости. vImage добавляет, что надлежащее смещение оценивает каждому исходному значению до умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    post_bias

    Упакованный массив значений смещения, один для каждой целевой плоскости. vImage добавляет, что надлежащее смещение оценивает каждому целевому значению после умножения матриц. Передача NULL если Вы не хотите применяться, предварительная обработка смещают значение.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Обсуждение

    Работа совпадает с vImageMatrixMultiply_ARGB8888 за исключением того, что значения с плавающей точкой используются и нет никакого делителя.

    Знайте, что используются 32-разрядные аккумуляторы со знаком. Если сумма по какому-либо столбцу матрицы больше, чем ±223, переполнение может произойти. Вообще говоря, это не произойдет, потому что матричные элементы являются 16-разрядными целыми числами, таким образом, потребовалось бы больше чем 256 исходных плоскостей, прежде чем могла возникнуть проблема.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Возвращает объект гамма-функции.

    Объявление

    Swift

    func vImageCreateGammaFunction(_ gamma: Float, _ gamma-type: Int32, _ flags: vImage_Flags) -> GammaFunction

    Objective C

    GammaFunction vImageCreateGammaFunction ( float gamma, int gamma_type, vImage_Flags flags );

    Параметры

    gamma

    Экспонента питания функционирует для вычисления гамма-коррекции полной точности.

    gamma-type

    Селектор для типа гамма-коррекции для использования. Передайте один из полных - или константы типа полуточности, определенные в Типах Гамма-функции.

    flags

    Передача kvImageDoNotTile если Вы планируете выполнить свою собственную многопоточность мозаичного размещения или использования.

    Возвращаемое значение

    Объект гамма-функции, инкапсулирующий гамма значение, тип гамма-функции и флаги опции.

    Обсуждение

    Можно передать объект гамма-функции любой из трех функций гамма-коррекции: vImageGamma_Planar8toPlanarF, vImageGamma_PlanarFtoPlanar8, vImageGamma_PlanarF.

    Параметр гамма типа определяет тип вычисления, которое будет использоваться. Самое простое вычисление:

    • if (value == 0) result = 0;
    • else {
    • if (value < 0)
    • sign = -1.0f;
    • else
    • sign = 1.0f;
    • result = pow( fabs( value ), gamma) * sign;
    • }

    Это вычисление приводит к симметричной гамме, изгибает приблизительно 0 и удостоверяется, что только значения хорошего поведения используются в pow().

    Можно использовать эквивалентное вычисление, использующее более эффективный метод, в зависимости от желаемой точности.

    В дополнение к гамма-коррекции полной точности существует более быстрая опция полуточности, обеспечивающая 12-разрядную точность.

    f Ваши данные будет в конечном счете преобразован в 8-разрядные целочисленные данные, рассмотрит использование полуточности. Варианты полуточности работают правильно только на входные значения с плавающей точкой в диапазоне 0.0... 1.0, хотя значения из диапазона приводят к результатам, фиксирующим соответственно к 0 или 255 на преобразовании назад в 8-разрядный. Кроме того, существуют ограничения на диапазон экспоненты: это должно быть положительно в диапазоне 0.1 к 10,0.

    Наконец, существует ряд еще более быстрых опций полуточности, использующих предопределенные гамма значения, игнорируя набор значений в vImageCreateGammaFunction. Эти опции имеют те же ограничения на входные значения, как утверждено ранее.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Уничтожает создаваемый объект гамма-функции.

    Объявление

    Swift

    func vImageDestroyGammaFunction(_ f: GammaFunction)

    Objective C

    void vImageDestroyGammaFunction ( GammaFunction f );

    Параметры

    f

    Объект гамма-функции создается с функцией vImageCreateGammaFunction.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет гамма-функцию к изображению Planar8 для создания изображения PlanarF.

    Объявление

    Swift

    func vImageGamma_Planar8toPlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ gamma: GammaFunction, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageGamma_Planar8toPlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const GammaFunction gamma, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    gamma

    Объект гамма-функции, создаваемый с путем вызывания функции vImageCreateGammaFunction.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет гамма-функцию к изображению в формате PlanarF к изображению в формате Planar8.

    Объявление

    Swift

    func vImageGamma_PlanarFtoPlanar8(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ gamma: GammaFunction, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageGamma_PlanarFtoPlanar8 ( const vImage_Buffer *src, const vImage_Buffer *dest, const GammaFunction gamma, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    gamma

    Объект гамма-функции, создаваемый с путем вызывания функции vImageCreateGammaFunction.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

  • Применяет гамма-функцию к изображению PlanarF.

    Объявление

    Swift

    func vImageGamma_PlanarF(_ src: UnsafePointer<vImage_Buffer>, _ dest: UnsafePointer<vImage_Buffer>, _ gamma: GammaFunction, _ flags: vImage_Flags) -> vImage_Error

    Objective C

    vImage_Error vImageGamma_PlanarF ( const vImage_Buffer *src, const vImage_Buffer *dest, const GammaFunction gamma, vImage_Flags flags );

    Параметры

    src

    Указатель на vImage буферизует структуру, содержащую исходное изображение.

    dest

    Указатель на vImage буферизует структуру данных. Вы ответственны за заполнение height, width, и rowBytes поля этой структуры, и для выделения буфера данных надлежащего размера. По возврату буфер данных, на который указывает эта структура, содержит данные конечного изображения. Когда Вам больше не нужен буфер данных, необходимо освободить память.

    gamma

    Объект гамма-функции, создаваемый с путем вызывания функции vImageCreateGammaFunction.

    flags

    Зарезервированный для будущего использования; передача 0.

    Возвращаемое значение

    kvImageNoError, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.

    Оператор импорта

    Objective C

    @import Accelerate;

    Swift

    import Accelerate

    Доступность

    Доступный в OS X v10.4 и позже.

Константы

  • Типы полных - или гамма-функции полуточности.

    Объявление

    Objective C

    enum { kvImageGamma_UseGammaValue = 0, kvImageGamma_UseGammaValue_half_precision = 1, kvImageGamma_5_over_9_half_precision = 2, kvImageGamma_9_over_5_half_precision = 3, kvImageGamma_5_over_11_half_precision = 4, kvImageGamma_11_over_5_half_precision = 5, kvImageGamma_sRGB_forward_half_precision = 6, kvImageGamma_sRGB_reverse_half_precision = 7, kvImageGamma_11_over_9_half_precision = 8, kvImageGamma_9_over_11_half_precision = 9, kvImageGamma_BT709_forward_half_precision = 10, kvImageGamma_BT709_reverse_half_precision = 11 };

    Константы

    • kvImageGamma_UseGammaValue

      kvImageGamma_UseGammaValue

      Вычисление полной точности с помощью гамма набора значений в vImageCreateGammaFunction.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_UseGammaValue_half_precision

      kvImageGamma_UseGammaValue_half_precision

      Вычисление полуточности с помощью гамма набора значений в vImageCreateGammaFunction.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_5_over_9_half_precision

      kvImageGamma_5_over_9_half_precision

      Вычисление полуточности с помощью гамма значения 5/9 или 1/1.8.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_9_over_5_half_precision

      kvImageGamma_9_over_5_half_precision

      Вычисление полуточности с помощью гамма значения 9/5 или 1.8.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_5_over_11_half_precision

      kvImageGamma_5_over_11_half_precision

      Вычисление полуточности с помощью гамма значения 5/11 или 1/2.2.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_11_over_5_half_precision

      kvImageGamma_11_over_5_half_precision

      Вычисление полуточности с помощью гамма значения 11/5 или 2.2. На выходе гамма является 5/11.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_sRGB_forward_half_precision

      kvImageGamma_sRGB_forward_half_precision

      Вычисление полуточности с помощью sRGB стандартного гамма значения 2,2.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_sRGB_reverse_half_precision

      kvImageGamma_sRGB_reverse_half_precision

      Вычисление полуточности с помощью sRGB стандартного гамма значения 1/2.2.

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_11_over_9_half_precision

      kvImageGamma_11_over_9_half_precision

      Вычисление полуточности с помощью гамма значения 11/9 или (11/5) / (9/5).

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_9_over_11_half_precision

      kvImageGamma_9_over_11_half_precision

      Вычисление полуточности с помощью гамма значения 9/11 или (9/5) / (11/5).

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_BT709_forward_half_precision

      kvImageGamma_BT709_forward_half_precision

      ITU-R Купленный 709 стандарт. Это походит на kvImageGamma_sRGB_forward_half_precision выше, но без 1,125 гамм просмотра для компьютерной графики: x<0.081? x/4.5: pow((x+0.099)/1.099, 1/0.45).

      Доступный в OS X v10.4 и позже.

    • kvImageGamma_BT709_reverse_half_precision

      kvImageGamma_BT709_reverse_half_precision

      ITU-R Купленный 709 стандартный реверс. Это походит на kvImageGamma_sRGB_reverse_half_precision выше, но без 1,125 гамм просмотра для компьютерной графики: x<0.018? 4.5*x: 1.099*pow(x,0.45) - 0.099.

      Доступный в OS X v10.4 и позже.