У меня есть группа координат, которые в одном направлении для примера:
Координаты для вертикальной проекции: 8,15; 9,27; 10,40; 7,55; 5,68.
Координаты для горизонтальной проекции: 8,27; 20,28; 36,26; 51,25; 64,27;
Как можно выровнять координаты в вертикальной проекции и горизонтальной проекции, чтобы для всех координат вертикальной проекции было одно значение X, например: 8,15; 8,27; 8,40; 8,55; 8,68. и для горизонтальной проекции имеют одинаковое значение Y, например: 8,28; 20,28; 36,28; 51,28; 64,28?
Я уже обнаружил координаты для каждой точки на изображении, но координаты не идеально выровнены (см. Пример координат выше).
Вот почему мне действительно нужно какое-либо предложение, как я могу выровнять эти обнаруженные точки в идеальное выравнивание для каждой линии (как выделено цветами).
Я когда-либо слышал об анализе основных компонентов, но я не знаю, с чего начать, если я использую PCA, потому что вряд ли есть хороший пример для выравнивания координат.
Если есть какие-либо другие хорошие рекомендации, я действительно надеюсь, что кто-то хотел бы поделиться ими.
Любая помощь будет принята с благодарностью. Спасибо
Ммм, так как вы используете OpenCV, вы можете быть заинтересованы в этом подходе, который основан на матричных манипуляциях в пиксельном масштабе:
1) Создайте двоичное изображение (черно-белое), поэтому вы инициализируете черное изображение (или просто нулевую матрицу нужного размера).
2) Поскольку у вас уже есть несортированные баллы (и, следовательно, индексы матрицы), вы можете сделать цикл for. Таким образом, для каждой точки вы меняете цвет пикселя в двоичном изображении на белый. Если вам нужно позаботиться о памяти, вы можете использовать разреженную матрицу.
3) Чтобы получить отсортированный список по x или y, вы просто проходите через соответствующую строку / столбец вашего двоичного изображения и возвращаете столбец / строку каждого белого пикселя.
В результате вы получите хорошее двоичное изображение и ваши отсортированные точки.
редактировать: Так как вы хотите выполнить некоторое усреднение в одном компоненте, это может быть обработано булевым выражением, так что вы устанавливаете один coodinate в желаемом диапазоне на конкретное значение. Второе решение состоит в том, что вы поворачиваете входное изображение перед извлечением точек. В OpenCV повороты уже реализованы, вам нужно только выяснить угол.
Приветствия TL
Других решений пока нет …