嗨我已经加载了一个图像,从而创建一个3D矩阵。如何在3D矩阵中使用数组作为索引?
img1 = imread('bluebird.jpg')
我知道,对于一个载体,我可以创建基于逻辑测试的另一种载体和使用等载体作为指数是这样的:
speeds = [20 77 55 90 87 65 67 72 55]
invalid = speed > 70
speeds(invalid) = 0
这将设置所有无效的速度speeds
到0.
但我还没有想出如何用3D矩阵(图像)做到这一点。
我想要做的是为蓝色分量至少比三个分量(灰度)的平均值高出20%的每个像素交换颜色分量1(红色)和3(蓝色)。
我已经试过这样:
img1 = imread('bluebird.jpg');
img2 = img1;
m = mean(img1, 3);
blues = img1(:,:,3) > 1.2*m;
img2(blues, [3,2,1]) = img1(blues, [1,2,3]);
但没有奏效。变量蓝调成功获得我想要的像素(具有显性蓝色分量的像素),但在最后一行中出现非法语法。
是否有可能做我想要的东西?如果是这样,怎么样?
在此先感谢。
第一个陈述其实并非如此。你不能合并逻辑*矩阵*和基于整数的索引。 – Suever
@Suever谢谢澄清。并且'基于整数'也是正确的术语... – zeeMonkeez