vImage Преобразовывают Ссылку
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import Accelerate
Objective C
@import Accelerate;
Функции трансформации изменяют значения пикселей в изображении. В отличие от сверток, функции трансформации не зависят от значений соседних пикселей. 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_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Использует таблицу поиска для преобразования изображения в формат PlanarF к изображению в формате Planar8.
Объявление
Swift
func vImageLookupTable_PlanarFtoPlanar8(_
src
: UnsafePointer<vImage_Buffer>, _dest
: UnsafePointer<vImage_Buffer>, _table
: UnsafePointer<Pixel_8>, _flags
: vImage_Flags) -> vImage_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Использует таблицу поиска для преобразования изображения в формат 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_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Применяет ряд кусочных многочленов к изображению в формате 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_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
vImagePiecewisePolynomial_Planar8toPlanarF (_: _: _: _: _: _: _:) vImagePiecewisePolynomial_Planar8toPlanarF
Применяет ряд кусочных многочленов для преобразования изображения в формат 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_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
См. также
-
vImagePiecewisePolynomial_PlanarFtoPlanar8 (_: _: _: _: _: _: _:) vImagePiecewisePolynomial_PlanarFtoPlanar8
Применяет ряд кусочных многочленов для преобразования изображения в формат 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_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
См. также
-
Применяет кусочное рациональное выражение к изображению в формате 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_ErrorObjective 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
за исключением того, что это оценивает кусочное рациональное выражение в форме:Каждый полиномиал имеет свой собственный набор коэффициентов и свой собственный полиномиальный порядок. Эти два полиномиала совместно используют тот же набор границ сегмента. Если полиномиалы разделяются тогда, все главные полиномиалы должны иметь тот же порядок, и все нижние полиномиалы должны иметь тот же порядок. Однако независимо от того, разделяется ли полиномиал или нет, главные полиномиалы не должны быть тем же порядком как нижние полиномиалы.
Эта функция не поставляет 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
Доступность
Доступный в iOS 5.0 и позже.
-
Воздействует на ряд 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_ErrorObjective 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_planes
x
src_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
Доступность
Доступный в iOS 5.0 и позже.
-
Работает на ряд плоскостей исходного изображения с плавающей точкой, умножая каждый пиксель на предоставленную матрицу для создания ряда плоскостей конечного изображения с плавающей точкой.
Объявление
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_ErrorObjective 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_planes
x
src_planes
. vImage умножает каждый исходный пиксель на эту матрицу для создания целевого пикселя.pre_bias
Упакованный массив значений смещения, один для каждой исходной плоскости. vImage добавляет, что надлежащее смещение оценивает каждому исходному значению до умножения матриц. Передача
NULL
если Вы не хотите применяться, предварительная обработка смещают значение.post_bias
Упакованный массив значений смещения, один для каждой целевой плоскости. vImage добавляет, что надлежащее смещение оценивает каждому целевому значению после умножения матриц. Передача
NULL
если Вы не хотите применяться, предварительная обработка смещают значение.flags
Зарезервированный для будущего использования; передача 0.
Возвращаемое значение
kvImageNoError
, иначе один из кодов ошибки, описанных в vImage Ссылке Типов данных и Констант.Обсуждение
Работа совпадает с
vImageMatrixMultiply_Planar8
за исключением того, что значения с плавающей точкой используются и нет никакого делителя.Оператор импорта
Objective C
@import Accelerate;
Swift
import Accelerate
Доступность
Доступный в iOS 5.0 и позже.
-
Работает на чередованное 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_ErrorObjective 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-мерный массив, значения которого представляют 4
x
4 матрицы. 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
Доступность
Доступный в iOS 5.0 и позже.
-
Работает на чередованное исходное изображение с плавающей точкой, умножая каждый пиксель на предоставленную матрицу для создания чередованного конечного изображения с плавающей точкой.
Объявление
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_ErrorObjective 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-мерный массив, значения которого представляют 4
x
4 матрицы. 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
Доступность
Доступный в iOS 5.0 и позже.
-
Возвращает объект гамма-функции.
Объявление
Swift
func vImageCreateGammaFunction(_
gamma
: Float, _gamma-type
: Int32, _flags
: vImage_Flags) -> GammaFunctionObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Уничтожает создаваемый объект гамма-функции.
Объявление
Swift
func vImageDestroyGammaFunction(_
f
: GammaFunction)Objective C
void vImageDestroyGammaFunction ( GammaFunction f );
Параметры
f
Объект гамма-функции создается с функцией
vImageCreateGammaFunction
.Оператор импорта
Objective C
@import Accelerate;
Swift
import Accelerate
Доступность
Доступный в iOS 5.0 и позже.
-
Применяет гамма-функцию к изображению Planar8 для создания изображения PlanarF.
Объявление
Swift
func vImageGamma_Planar8toPlanarF(_
src
: UnsafePointer<vImage_Buffer>, _dest
: UnsafePointer<vImage_Buffer>, _gamma
: GammaFunction, _flags
: vImage_Flags) -> vImage_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Применяет гамма-функцию к изображению в формате PlanarF к изображению в формате Planar8.
Объявление
Swift
func vImageGamma_PlanarFtoPlanar8(_
src
: UnsafePointer<vImage_Buffer>, _dest
: UnsafePointer<vImage_Buffer>, _gamma
: GammaFunction, _flags
: vImage_Flags) -> vImage_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Применяет гамма-функцию к изображению PlanarF.
Объявление
Swift
func vImageGamma_PlanarF(_
src
: UnsafePointer<vImage_Buffer>, _dest
: UnsafePointer<vImage_Buffer>, _gamma
: GammaFunction, _flags
: vImage_Flags) -> vImage_ErrorObjective 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
Доступность
Доступный в iOS 5.0 и позже.
-
Типы полных - или гамма-функции полуточности.
Объявление
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
Вычисление полной точности с помощью гамма набора значений в
vImageCreateGammaFunction
.Доступный в iOS 5.0 и позже.
-
kvImageGamma_UseGammaValue_half_precision
Вычисление полуточности с помощью гамма набора значений в
vImageCreateGammaFunction
.Доступный в iOS 5.0 и позже.
-
kvImageGamma_5_over_9_half_precision
Вычисление полуточности с помощью гамма значения 5/9 или 1/1.8.
Доступный в iOS 5.0 и позже.
-
kvImageGamma_9_over_5_half_precision
Вычисление полуточности с помощью гамма значения 9/5 или 1.8.
Доступный в iOS 5.0 и позже.
-
kvImageGamma_5_over_11_half_precision
Вычисление полуточности с помощью гамма значения 5/11 или 1/2.2.
Доступный в iOS 5.0 и позже.
-
kvImageGamma_11_over_5_half_precision
Вычисление полуточности с помощью гамма значения 11/5 или 2.2. На выходе гамма является 5/11.
Доступный в iOS 5.0 и позже.
-
kvImageGamma_sRGB_forward_half_precision
Вычисление полуточности с помощью sRGB стандартного гамма значения 2,2.
Доступный в iOS 5.0 и позже.
-
kvImageGamma_sRGB_reverse_half_precision
Вычисление полуточности с помощью sRGB стандартного гамма значения 1/2.2.
Доступный в iOS 5.0 и позже.
-
kvImageGamma_11_over_9_half_precision
Вычисление полуточности с помощью гамма значения 11/9 или (11/5) / (9/5).
Доступный в iOS 5.0 и позже.
-
kvImageGamma_9_over_11_half_precision
Вычисление полуточности с помощью гамма значения 9/11 или (9/5) / (11/5).
Доступный в iOS 5.0 и позже.
-
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)
.Доступный в iOS 5.0 и позже.
-
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
.Доступный в iOS 5.0 и позже.
-