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

Python 将X、Y浮点坐标转换为二进制矩阵,然后执行Hough线变换,python,matlab,numpy,image-processing,hough-transform,Python,Matlab,Numpy,Image Processing,Hough Transform,是否可以计算xy浮点数组的hough线变换,类似于python中的matlab代码 数据看起来像 您在MATLAB中的示例仅适用于整数(x,y)坐标 比如说 %I使用10x10单位矩阵模拟一行点 %并将得到的x,y坐标缩放为浮点 [X,Y]=find(眼睛(10)); X=X*0.1; Y=Y*0.1; A=满(稀疏(X,Y,真)); 抛出错误 使用“稀疏”时出错。矩阵中的索引必须是整数 如果你想把浮点坐标转换成二进制矩阵,我知道的唯一方法就是抽取你的空间 %抽取网格的精度 量表=.01; %

是否可以计算xy浮点数组的hough线变换,类似于python中的matlab代码

数据看起来像


您在MATLAB中的示例仅适用于整数(x,y)坐标

比如说

%I使用10x10单位矩阵模拟一行点
%并将得到的x,y坐标缩放为浮点
[X,Y]=find(眼睛(10));
X=X*0.1;
Y=Y*0.1;
A=满(稀疏(X,Y,真));
抛出错误

使用“稀疏”时出错。矩阵中的索引必须是整数

如果你想把浮点坐标转换成二进制矩阵,我知道的唯一方法就是抽取你的空间

%抽取网格的精度
量表=.01;
%将X、Y值缩放为大于1的整数
行指数=圆形((Y-最小值(Y))/刻度)+1;
col_指数=圆形((X-min(X))/刻度)+1;
%行值也需要翻转
%即y=0应为矩阵中的最大行,以保持坐标系的相同方向
行索引=最大值(行索引)-行索引+1;
%使用您的方法创建矩阵
A=完整(稀疏(行索引,列索引,真));
%A中的每一行和每一列对应于这些范围向量中的值
X范围=最小值(X):刻度:最大值(X);
Y范围=最大值(Y):-刻度:最小值(Y);
测试这些转换是否产生了预期的结果。我绘制了矩阵

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');
而且看起来不错


类似的方法应该很容易使用numpy实现。

您在MATLAB中的示例仅适用于整数(x,y)坐标

比如说

%I使用10x10单位矩阵模拟一行点
%并将得到的x,y坐标缩放为浮点
[X,Y]=find(眼睛(10));
X=X*0.1;
Y=Y*0.1;
A=满(稀疏(X,Y,真));
抛出错误

使用“稀疏”时出错。矩阵中的索引必须是整数

如果你想把浮点坐标转换成二进制矩阵,我知道的唯一方法就是抽取你的空间

%抽取网格的精度
量表=.01;
%将X、Y值缩放为大于1的整数
行指数=圆形((Y-最小值(Y))/刻度)+1;
col_指数=圆形((X-min(X))/刻度)+1;
%行值也需要翻转
%即y=0应为矩阵中的最大行,以保持坐标系的相同方向
行索引=最大值(行索引)-行索引+1;
%使用您的方法创建矩阵
A=完整(稀疏(行索引,列索引,真));
%A中的每一行和每一列对应于这些范围向量中的值
X范围=最小值(X):刻度:最大值(X);
Y范围=最大值(Y):-刻度:最小值(Y);
测试这些转换是否产生了预期的结果。我绘制了矩阵

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');
而且看起来不错


类似的方法应该很容易用numpy实现。

我曾尝试在这个问题上使用ransac,但由于一些数据中存在类似的噪声簇,所以效果不够好。这是您的问题,如何在python中将X,Y点转换为二进制矩阵?或者如何执行hough变换?如何在python中将X、Y点转换为二进制矩阵,但这些点是浮点而不是整数。我会把问题说得更清楚。我曾尝试在这个问题上使用ransac,但由于一些数据中存在类似的噪声簇,它的效果不够好。这是你的问题,如何在python中将X,Y点转换为二进制矩阵?或者如何执行hough变换?如何在python中将X、Y点转换为二进制矩阵,但这些点是浮点而不是整数。我会把问题弄清楚的。是的,这就是我所想的,但问题是我在点之间有很小的差异,所以最小的差异约为0.0000001,最大的差异约为1。因此,通过抽取阵列,它会产生一个包含很少元素的巨大阵列,并且由于阵列的大小,处理它需要很长时间,这在我的例子中是不可能的。你认为还有其他方法可以解决这个问题吗?如果点的数量很小,你可以实现你自己的hough变换,如中所述。是的,这就是我所想的,但问题是点之间的差异非常小,所以最小的差异约为0.0000001,最大的差异约为1。因此,通过抽取阵列,它会产生一个包含很少元素的巨大阵列,并且由于阵列的大小,处理它需要很长时间,这在我的例子中是不可能的。您认为还有其他方法可以解决这个问题吗?如果点数很小,您可以实现自己的hough变换,如中所述。