【问题标题】:Diagonal pixels of an image in MATLABMATLAB中图像的对角线像素
【发布时间】:2020-11-27 10:58:21
【问题描述】:

我有一个大小为30 x 100 像素的图像。

  1. 如何计算对角线上有多少像素?我可以吗 只应用勾股定理?但如果是,我们可能会获得浮点数 像素数。那么我该如何解决这个问题呢?

  2. 另外,如何自动提取xy的坐标值 对角线上的每个像素?

我已经为一个非常简单的方阵编写了一个 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 

【问题讨论】:

    标签: matlab math


    【解决方案1】:

    您可以使用这些步骤来获取对角线像素

    1. 获取最小宽度和高度长度(假设是宽度)
    2. 循环通过最小长度(例如:宽度)
    3. 通过四舍五入获得高度坐标 i * 高度/宽度

    例如 50 x 100

    1. 最小值为 50
    2. 对于 i = 0,j = 0 x 100 / 50 = 0
    3. 对于 i = 1,j = 1 x 100 / 50 = 2
    4. 对于 i = 2,j = 2 x 100 / 50 = 4
    5. ...
    6. 对于 i = 50,j = 50 x 100 / 50 = 100

    【讨论】:

    • 谢谢!这是一个很好的方法。我会看看我得到了什么,并让你更新!
    • 不要忘记将结果四舍五入到较小的值(1.9变成1而不是2)
    • 这不会产生连续的线。如果您改为在最大长度上循环,您会得到等效的 Bresenham 线,这是两个角之间的理想连续线。
    • @CrisLuengo 感谢您的评论。您能否在答案中详细解释一下以及如何在 MATLAB 中执行此操作?因为我没有很好地理解你的话。非常感谢
    • @Christina:我的意思是完全遵循这个答案,但在第 2 步中迭代最大长度而不是最小长度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多