我有一个 450x450 的灰色图像。要处理的每个像素的邻域由基于两个半径 R1 和 R2 的欧几里得距离定义。 因此:
R1 和- R2 邻域中的所有像素应分别求和。
- 映射到 R1 和 R2 的每个像素应每次通过计数。
- 新图像应为这两个区域的比率:映射到 R1*计数器 2 的像素总和/映射到 R2*计数器 1 的像素总和。
如何在 MATLAB 中执行此操作?
欧几里得距离R1
内的邻域可以按如下方式获得:
[x,y] = meshgrid(-R1:R1,-R1:R1);
r = x.^2 + y.^2;
k1 = r < R1.^2;
与此内核的卷积导致,对于每个输出像素,其邻域中的像素总和:
sum1 = conv2(img, k1);
(其中img
是你的图像 - 请确保它是浮点类型,如果它是整数类型,则可能无法正确表示总和的结果(。
您可以对R2
重复上述相同的代码,导致sum2
,然后计算您的比率:
result = sum1 ./ sum2;