2015-11-23 2 views
4

Я внесла некоторые исправления в документацию cv::mixChannels, как видно here. но я думаю, что есть некоторые исправления, необходимые для описания параметров.Мне нужна помощь для понимания cv :: mixChannels

например, описание fromTo для const int* fromTo и const std::vector<int>& fromTo такое же.

CV_EXPORTS void mixChannels(const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts, 
         const int* fromTo, size_t npairs); 
CV_EXPORTS void mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst, 
         const int* fromTo, size_t npairs); 
CV_EXPORTS_W void mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst, 
           const std::vector<int>& fromTo); 

Parameters 
    src ... 
    dst .... 
    fromTo array of index pairs specifying which channels are copied and where; fromTo[k*2] 
    is a 0-based index of the input channel in src, fromTo[k*2+1] is an index of the output 
    channel in dst; the continuous channel numbering is used: the first input image channels 
    are indexed from 0 to src[0].channels()-1, the second input image channels are indexed 
    from src[0].channels() to src[0].channels() + src[1].channels()-1, and so on, the same 
    scheme is used for the output image channels; as a special case, when fromTo[k*2] is 
    negative, the corresponding output channel is filled with zero . 

Мне нужна помощь по этому вопросу.

любая помощь будет оценена.

+0

я посмотрю на это позже .. но вы уверены, что такого рода вопрос по теме здесь? – Miki

+0

привет Мики, спасибо за ваш ответ. Я не знаю, что это подходящая платформа, но я просто спросил. – sturkmen

+0

Я считаю, что описание 'fromTo' верное.Это может быть прояснено каким-то образом, но, кроме диаграммы, будет трудно объяснить словами. У вас есть проблема с определенной частью описания? –

ответ

4

Почему вы изменили «массив или вектор матриц» на просто «массив матриц»?

Что касается аргумента fromTo, я попытаюсь разобрать абзац.

array of index pairs specifying which channels are copied and where; 

Это будет в форме [In, Out, In, Out, In, Out, ...]. Каждое значение в массиве будет целым числом, представляющим канал в одном из изображений. Сопоставление между этими целыми числами и фактическими каналами объясняется позже.

fromTo[k*2] is a 0-based index of the input channel in src, 
fromTo[k*2+1] is an index of the output channel in dst; 

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

the continuous channel numbering is used: the first input image channels 
are indexed from 0 to src[0].channels()-1, the second input image 
channels are indexed from 
src[0].channels() to src[0].channels() + src[1].channels()-1, and so on, 

Это объясняет схему нумерации. Концепция очень проста и, возможно, затенена формализмом. src[0] - первое входное изображение, src[1] - второе входное изображение.

Если у нас есть два входных изображения с тремя каналами каждый, мы просто будем называть каналы следующим образом: 0, 1, 2, 3, 4, 5. Как вы можете видеть, каналы первого изображения нумеруются 0 , 1, 2 ("0 to src[0].channels()-1 ") и каналы второго изображения пронумерованы 3, 4, 5 (" src[0].channels() "(то есть: 3)" to src[0].channels() + src[1].channels()-1" (то есть: 3 + 3 - 1 = 5))

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

the same scheme is used for the output image channels; 

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

as a special case, when fromTo[k*2] is negative, 
the corresponding output channel is filled with zero . 

Среди пар входных/выходных каналов, если есть что-то вроде -1, 3, выходной канал, представленный индексом 3 будет заполнено нулями.

+0

Благодарим вас за подробное объяснение. Я отредактировал мой вопрос, чтобы быть более ясным. – sturkmen

1

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

  1. более болтливый
  2. более математическая

Также я оставлю входной массив или вектор матриц.

Возможно, это будет полезно fromTo было const std::vector<Vec2i> (пары индексов), но это может сломать слишком много кода, я полагаю.


Чатти

что-то вроде:

FromTo: массив индексов, указывающих, какие каналы будут скопированы и где. Даже индексы представляют собой канал из в SRC, а нечетные индексы представляют собой канал к в целевой_адресе. Когда четный индекс отрицательный, соответствующий канал - заполняется нулями. В случае нескольких изображений индексы второго изображения следуют за индексами первого изображения и т. Д.

Математическая

что-то вроде:

FromTo: массив в виде \[ from^{0}_{0}, to^{0}_{0}, ... from^{0}_{src[0].channels()-1}, to^{0}_{src[0].channels()-1}, ..., from^{i}_{j}, to^{i}_{j}, ... \], где:

  • от является исходным изображением
  • к является го е конечное изображение
  • я является индексом изображения источника и назначения в SRC и целевой_адрес,
  • J является каналом, от 0 до SRC [I] .channels() - 1

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


Просто некоторые случайные мысли ...: D

+0

Большое вам спасибо. – sturkmen

Смежные вопросы