Matlab 3D按H、S、V排序
在Matlab中,我想按特定顺序对颜色值进行排序。 比如说,按色调排序,然后是Sat,然后是强度(V)。或者,用V,H,然后S 大概是这样的:Matlab 3D按H、S、V排序,matlab,sorting,colors,Matlab,Sorting,Colors,在Matlab中,我想按特定顺序对颜色值进行排序。 比如说,按色调排序,然后是Sat,然后是强度(V)。或者,用V,H,然后S 大概是这样的: % UNSORTED A(:,:,1) = [1 1 1 1 1 2 2 2 1 1 1]; A(:,:,2) = [1 1 1 1 1 3 2 2 3 2 2]; A(:,:,3) = [3 1 4 3 2 1 2 1 1 2 1]; % RESULT A(:,:,1) = [1 1 1 1 1 1 1 1 2 2 2] A(:,:,2) =
% UNSORTED
A(:,:,1) = [1 1 1 1 1 2 2 2 1 1 1];
A(:,:,2) = [1 1 1 1 1 3 2 2 3 2 2];
A(:,:,3) = [3 1 4 3 2 1 2 1 1 2 1];
% RESULT
A(:,:,1) = [1 1 1 1 1 1 1 1 2 2 2]
A(:,:,2) = [1 1 1 1 1 2 2 3 2 2 3]
A(:,:,3) = [1 2 3 3 4 1 2 1 1 2 1]
我在这件事上挣扎了一天,运气不好。有什么帮助吗?一种方法可以是:
% UNSORTED
A(:,:,1) = [1 1 1 1 1 2 2 2 1 1 1];
A(:,:,2) = [1 1 1 1 1 3 2 2 3 2 2];
A(:,:,3) = [3 1 4 3 2 1 2 1 1 2 1];
for ii = 1:size(A,1)
A(ii,:,:) = reshape(sortrows(squeeze(A(ii,:,:)),[1:3]),[1,size(A,2),size(A,3)])
end
因此,我们提取每个2D矩阵,我们使用
压缩
删除单例维度,然后使用sortrows
对每行进行排序(优先级为1->2->3)。最后,我们对这个2D矩阵进行重塑,以恢复单体维度并获得3D矩阵。您真的需要将a
作为1x11x3数组吗?为什么不是11x3?我把问题简化了,请看下面更合适的MxNx3案例,谢谢。那么期望的结果是什么?请举例说明所需的输出;通过编辑你的问题,而不是回答,这是在将3D图像矩阵重塑为A在这里的样子,然后将排序后的图像重塑为原始图像之后才起作用的!非常感谢你!