在两个区域中检查从中心到地图区域的欧几里得距离

时间:2018-09-30 18:45:31

标签: matlab image-processing pixel grayscale euclidean-distance

我有一个450x450的灰度图像。每个待处理像素的邻域由基于两个半径R1和R2的欧几里得距离定义。因此:

  • R1和R2附近的所有像素应分别求和。
  • 映射到R1和R2的每个像素应在每次通过时计数。
  • 新图像应为这两个区域的比率:映射到R1 * Counter2的像素总和/映射到R2 * Counter1的像素总和。

如何在MATLAB中做到这一点?

1 个答案:

答案 0 :(得分:1)

在欧几里德距离R1之内的邻域可以通过以下方式获得:

[x,y] = meshgrid(-R1:R1,-R1:R1);
r = x.^2 + y.^2;
k1 = r < R1.^2;

与该内核的卷积导致每个输出像素在其附近的像素之和:

sum1 = conv2(img, k1);

(其中img是您的图像,请确保它是浮点类型,如果是整数类型,则可能无法正确表示总和的结果)。 / p>

您可以对R2重复上面的相同代码,得到sum2,然后计算比率:

result = sum1 ./ sum2;