Matlab 如何获取图像上像素圆的值?

Matlab 如何获取图像上像素圆的值?,matlab,Matlab,我目前正在使用MatLab作为数字成像课程的一部分,并试图获得图像上像素圈的值。这个想法是从一个中心像素(x,y)开始,然后收集半径为r的所有像素并返回它们的值 到目前为止,我所能创建的只是这个(其中A_grey是一个图像): 但我不完全确定我在做什么,我真的可以在这里用一些初学者的建议。有什么建议吗?我给你一根骨头。这其实很容易。给定图像/查看窗口的大小(存储在要检查的宽度和高度中),生成一组点,然后搜索满足圆方程的(x,y)值。换句话说,您希望搜索给定圆心的所有(x,y)值(x0,y0),以

我目前正在使用MatLab作为数字成像课程的一部分,并试图获得图像上像素圈的值。这个想法是从一个中心像素(x,y)开始,然后收集半径为r的所有像素并返回它们的值

到目前为止,我所能创建的只是这个(其中
A_grey
是一个图像):


但我不完全确定我在做什么,我真的可以在这里用一些初学者的建议。有什么建议吗?

我给你一根骨头。这其实很容易。给定图像/查看窗口的大小(存储在要检查的
宽度
高度
中),生成一组点,然后搜索满足圆方程的
(x,y)
值。换句话说,您希望搜索给定圆心的所有
(x,y)
(x0,y0)
,以便:

(x - x0)^2 + (y - y0)^2 = r^2
r
是所需圆的半径。因此,它非常简单:

[x,y] = meshgrid(1:width, 1:height);
p = (x - x0).^2 + (y - y0).^2 == r^2;
pts = [x(p) y(p)];
我们首先生成点的
meshgrid
。将
meshgrid
视为一组二维阵列,其中这些阵列的同一点中的每个唯一空间位置都为您提供二维空间中该空间位置的xy坐标。请看以下示例:

[x,y] = meshgrid(1:3, 1:3)

x =

     1     2     3
     1     2     3
     1     2     3


y =

     1     1     1
     2     2     2
     3     3     3
就像素坐标而言,左上角是
(x,y)=(1,1)
。右上角是
(x,y)=(3,1)
,依此类推。请注意,
x
是水平的,而
y
是垂直的,这是大多数数字图像处理文献所提供的。如果这不是您想要的,请根据行/列约定替换
meshgrid


一旦我们生成了这个点网格,我们只需将其通过圆方程,看看给定中心
(x,y)
的哪些值
(x0,y0)
满足圆方程。一旦我们找到这样的位置,我们只需索引到我们的
网格点
,并返回那些
(x,y)
值,对应于沿着圆周长的那些点。

我给你扔一根骨头。这其实很容易。给定图像/查看窗口的大小(存储在要检查的
宽度
高度
中),生成一组点,然后搜索满足圆方程的
(x,y)
值。换句话说,您希望搜索给定圆心的所有
(x,y)
(x0,y0)
,以便:

(x - x0)^2 + (y - y0)^2 = r^2
r
是所需圆的半径。因此,它非常简单:

[x,y] = meshgrid(1:width, 1:height);
p = (x - x0).^2 + (y - y0).^2 == r^2;
pts = [x(p) y(p)];
我们首先生成点的
meshgrid
。将
meshgrid
视为一组二维阵列,其中这些阵列的同一点中的每个唯一空间位置都为您提供二维空间中该空间位置的xy坐标。请看以下示例:

[x,y] = meshgrid(1:3, 1:3)

x =

     1     2     3
     1     2     3
     1     2     3


y =

     1     1     1
     2     2     2
     3     3     3
就像素坐标而言,左上角是
(x,y)=(1,1)
。右上角是
(x,y)=(3,1)
,依此类推。请注意,
x
是水平的,而
y
是垂直的,这是大多数数字图像处理文献所提供的。如果这不是您想要的,请根据行/列约定替换
meshgrid


一旦我们生成了这个点网格,我们只需将其通过圆方程,看看给定中心
(x,y)
的哪些值
(x0,y0)
满足圆方程。一旦我们找到这样的位置,我们只需索引到我们的
网格点
,并返回那些
(x,y)
值,对应于沿着圆周长的那些点。

我给你扔一根骨头。这其实很容易。给定图像/查看窗口的大小(存储在要检查的
宽度
高度
中),生成一组点,然后搜索满足圆方程的
(x,y)
值。换句话说,您希望搜索给定圆心的所有
(x,y)
(x0,y0)
,以便:

(x - x0)^2 + (y - y0)^2 = r^2
r
是所需圆的半径。因此,它非常简单:

[x,y] = meshgrid(1:width, 1:height);
p = (x - x0).^2 + (y - y0).^2 == r^2;
pts = [x(p) y(p)];
我们首先生成点的
meshgrid
。将
meshgrid
视为一组二维阵列,其中这些阵列的同一点中的每个唯一空间位置都为您提供二维空间中该空间位置的xy坐标。请看以下示例:

[x,y] = meshgrid(1:3, 1:3)

x =

     1     2     3
     1     2     3
     1     2     3


y =

     1     1     1
     2     2     2
     3     3     3
就像素坐标而言,左上角是
(x,y)=(1,1)
。右上角是
(x,y)=(3,1)
,依此类推。请注意,
x
是水平的,而
y
是垂直的,这是大多数数字图像处理文献所提供的。如果这不是您想要的,请根据行/列约定替换
meshgrid


一旦我们生成了这个点网格,我们只需将其通过圆方程,看看给定中心
(x,y)
的哪些值
(x0,y0)
满足圆方程。一旦我们找到这样的位置,我们只需索引到我们的
网格点
,并返回那些
(x,y)
值,对应于沿着圆周长的那些点。

我给你扔一根骨头。这其实很容易。给定图像/查看窗口的大小(存储在要检查的
宽度
高度
中),生成一组点,然后搜索满足圆方程的
(x,y)
值。换句话说,您要搜索所有
(x,