MATLAB中图像的对角线像素

Posted

技术标签:

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

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

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

    另外,如何自动提取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 

【问题讨论】:

【参考方案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中图像的对角线像素的主要内容,如果未能解决你的问题,请参考以下文章

以最快的速度获取字符串中图像的所有像素数据

MATLAB中图像的基本操作

如何使节点画布中图像的大小始终为 128 像素

matlab中图像的熵与边缘检测之间的关系是啥

MATLAB中图像的高通巴特沃斯滤波器

读取android中图像的所有像素块的准确颜色