简体   繁体   English

将X,Y浮点坐标转换为二进制矩阵,然后执行霍夫线变换

[英]Convert X,Y floating point coordinates to binary matrix and then perform a Hough line transform

Is it possible to compute a hough line transform of array of xy floating points, similar to this matlab code in python? 是否可以计算xy浮点数组的霍夫线变换,类似于python中的matlab代码?

 BW=full(sparse(x,y,true)); 

the data looks like 数据看起来像

在此处输入图片说明

Your example in MATLAB only works on integer (x,y) coordinates. 您在MATLAB中的示例仅适用于整数(x,y)坐标。

For example 例如

% I use a 10x10 identity matrix to simulate a line of points
% And scale the resulting x, y coordinates to be floating point 
[X, Y] = find(eye(10));
X = X * 0.1;
Y = Y * 0.1;
A = full(sparse(X, Y, true));

Throws the error 引发错误

Error using sparse. 使用稀疏时出错。 Index into matrix must be an integer. 矩阵索引必须是整数。

If you want to convert floating point coordinates into a binary matrix, the only way I know of is to decimate your space. 如果要将浮点坐标转换为二进制矩阵,我知道的唯一方法是减少空间。

% Precision of the decimated grid
scale = .01;

% Scale the X, Y values to be integers greater than 1
row_indices = round((Y - min(Y))/scale) + 1;    
col_indices = round((X - min(X))/scale) + 1;

% row values also need to be flipped 
% i.e. y = 0 should be the maximum row in the matrix to maintain the same orientation of the coordinate system
row_indices = max(row_indices) -  row_indices + 1;

% Create matrix using your method
A = full(sparse(row_indices, col_indices, true));

% Each row and column in A corresponds to the value in these range vectors
xrange = min(X):scale:max(X);
yrange = max(Y):-scale:min(Y);

To test whether these transformations produced the desired result. 测试这些转换是否产生了预期的结果。 I plotted the matrix. 我画了矩阵。

figure; 
subplot(1,2,1); imagesc(A);
xticks(1:20:100); xticklabels(xrange(1:20:end));
yticks(1:20:100); yticklabels(yrange(1:20:end));
subplot(1,2,2); plot(X, Y, 'ko');

And it's looking good. 而且看起来不错。

左侧的二进制矩阵,右侧的绘制点

A similar approach should be easy to implement using numpy. 使用numpy可以轻松实现类似的方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM