如何通过在MATLAB中识别唯一位置来更新图像值?

我有一个名为final_img的图像矩阵.我有图像位置矩阵,行和列如下

a =

     1     1
     1     2
     2     1
     2     2
     3     1
     3     2
     1     1
     2     2

和这些位置的价值是

b =

     1
     2
     3
     4
     5
     6
     7
     8

在上面给出的位置,一些正在重复,例如:位置[1 1].我可以使用以下代码识别唯一的位置

[uniquerow, ~, rowidx] = unique(a, 'rows'); 
noccurrences = accumarray(rowidx, 1);

我需要通过对图像位置值求和来更新唯一的图像位置.例如:位置[1 1]重复两次,b中的对应值为1和7

final_img(1,1)应为1 7 = 8;

如何在不使用for循环的情况下在MATLAB中实现此算法?

您可以使用 sparse功能,该功能会自动添加与相同坐标对应的所有值:

final_img = full(sparse(a(:,1), a(:,2), b));

这将根据输入创建尽可能小的矩阵.

如果您想要一个尽可能小的输出,并且它具有正方形的限制:

M = max(a(:));
final_img = full(sparse(a(:,1), a(:,2), b, M, M));

如果要指定输出的大小:

M = 3;
N = 3;
final_img = full(sparse(a(:,1), a(:,2), b, M, N));
相关文章
相关标签/搜索