Кластеризация OpenCV функционирует cvKMeans2 () - что тип кластера является центром в массиве?

Я использую функцию cvKMeans2 () из библиотеки OpenCV для кластеризации. Это имеет дополнительный параметр:
центры - Дополнительный выходной массив кластерных центров
Тот же параметр находится также в функции kmeans ().

Я хочу знать информацию о кластерах. Но я не нашел то, что является типом того кластерного центра в массиве, таким образом, я не могу получить его.

Спасибо за любые советы!

7
задан Amro 2 July 2012 в 07:15
поделиться

3 ответа

Перечисления в C/C + + являются простыми целыми числами.

Перечисления в Java являются объектами - они могут иметь методы (с различным поведением от одного экземпляра перечисления к другому). Кроме того, класс перечисления предоставляет методы, которые позволяют итерацию по всем экземплярам перечисления и поиск экземпляра перечисления.

C++:

typedef enum { Red, Yellow, Green } Colors;

void canCrossIntersection(Colors c) {
   return c == Green;
}

Java:

public enum Colors {
  RED(false),
  Yellow(false),
  Green(true) 
  ;

  Color(boolean b) { this.b = b; }
  private boolean b;

  public boolean canCrossIntersection() { return b; }
}
-121--2889093-

Вот команда, которую я почти всегда использую (добавление пользовательского кевина):

useradd -d /home/kevin -s /bin/bash -m kevin
-121--1013788-

В OpenCV 2.0 эквивалентная функция kmean принимает CV_32FC1 матрицу, но open

2
ответ дан 7 December 2019 в 16:42
поделиться

Если вам не нужно что-то криптографически защищенное, а просто «достаточно запутанное»...

Поля Галуа

Можно попытаться выполнить операции в полях Галуа , например, GF (2) 32 , чтобы сопоставить простой приращающий счетчик x с кажущимся случайным серийным числом y :

x = counter_value
y = some_galois_function(x)

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

Что касается поиска библиотеки для Галуа Поле для Пайтона... хороший вопрос. Если вам не нужна скорость (которую вы не хотели бы для этого), то вы можете сделать свой собственный. Я не пробовал это:

Матричное умножение в GF (2)

Выберите подходящую 32 × 32 инвертируемую матрицу в g1 Это концептуально связано с LFSR, как описано в ответе С.Лотта .

CRC

Связанная возможность состоит в использовании вычисления CRC . На основе остатка длительного деления с неприводимым полиномом в GF (2). Код Python легко доступен для CRC ( crcmod , pycrc ), хотя для ваших целей может потребоваться выбрать другой неприводимый полином, чем обычно используется. Я немного нечеток в теории, но я думаю, что 32-битный CRC должен генерировать уникальное значение для каждой возможной комбинации 4-байтовых входов. Проверьте это. Экспериментально проверить это довольно легко, подав выходной сигнал обратно на вход, и проверив, что он производит полный цикл длины 2 32 -1 (ноль просто отображает в ноль). Возможно, вам потребуется избавиться от любых начальных/окончательных XOR в алгоритме CRC, чтобы эта проверка работала.

-121--1210161-

Это делает его похожим на параметр «center» того же типа, что и первый параметр, который в другой документации гласит:

Метатип CvArr используется только в качестве параметра функции для указания того, что функция принимает массивы нескольких типов, например IplImage *, CvMat * или Конкретный тип массива определяется во время выполнения путем анализа первых 4 байт заголовка.

Это в сочетании с этим вопросом заставляет меня думать, что вам следует попробовать передать массив (вектор) CV, чтобы получить центры.

1
ответ дан 7 December 2019 в 16:42
поделиться
0
ответ дан 7 December 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: