MATLAB中图像的对角线像素
Posted
技术标签:
【中文标题】MATLAB中图像的对角线像素【英文标题】:Diagonal pixels of an image in MATLAB 【发布时间】:2020-11-27 10:58:21 【问题描述】:我有一个大小为30 x 100
像素的图像。
如何计算对角线上有多少像素?我可以吗 只应用勾股定理?但如果是,我们可能会获得浮点数 像素数。那么我该如何解决这个问题呢?
另外,如何自动提取x
和y
的坐标值
对角线上的每个像素?
我已经为一个非常简单的方阵编写了一个 MATLAB 代码。但是我怎样才能概括我的代码以包含任何大小的图像(不仅仅是方形图像)..
%suppose an image of size 100 x 100
image = rand(100,100);
n = length(image);
%extract how many pixels are there on the diagonal
diagonal_pixels = sqrt(n^2 + n^2);
%Get the x and y coordinates values of each diagonal pixel
for i = 1: n
x_coordinate_diag(i) = i;
y_coordinate_diag(i) = i;
end
【问题讨论】:
【参考方案1】:您可以使用这些步骤来获取对角线像素
-
获取最小宽度和高度长度(假设是宽度)
循环通过最小长度(例如:宽度)
通过四舍五入获得高度坐标 i * 高度/宽度
例如 50 x 100
-
最小值为 50
对于 i = 0,
j = 0 x 100 / 50 = 0
对于 i = 1,j = 1 x 100 / 50 = 2
对于 i = 2,j = 2 x 100 / 50 = 4
...
对于 i = 50,j = 50 x 100 / 50 = 100
【讨论】:
谢谢!这是一个很好的方法。我会看看我得到了什么,并让你更新! 不要忘记将结果四舍五入到较小的值(1.9变成1而不是2) 这不会产生连续的线。如果您改为在最大长度上循环,您会得到等效的 Bresenham 线,这是两个角之间的理想连续线。 @CrisLuengo 感谢您的评论。您能否在答案中详细解释一下以及如何在 MATLAB 中执行此操作?因为我没有很好地理解你的话。非常感谢 @Christina:我的意思是完全遵循这个答案,但在第 2 步中迭代最大长度而不是最小长度。以上是关于MATLAB中图像的对角线像素的主要内容,如果未能解决你的问题,请参考以下文章