【发布时间】:2015-08-07 13:08:38
【问题描述】:
假设我有两个输入图像。一个只包含绿色、红色和蓝色三种颜色作为标签。需要根据第一张图像中的颜色编辑的另一张图像。因此,例如,无论标签图像是红色的,我都希望函数 A 发生在原始图像上。
为此,我想创建一个查找,将颜色作为输入并输出要在原始图像上执行的函数。
最好的方法是什么?
【问题讨论】:
标签: matlab colors lookup-tables
假设我有两个输入图像。一个只包含绿色、红色和蓝色三种颜色作为标签。需要根据第一张图像中的颜色编辑的另一张图像。因此,例如,无论标签图像是红色的,我都希望函数 A 发生在原始图像上。
为此,我想创建一个查找,将颜色作为输入并输出要在原始图像上执行的函数。
最好的方法是什么?
【问题讨论】:
标签: matlab colors lookup-tables
您可以为此使用logical indexing。
im1 = [0 0 1;
1 2 0;
2 2 1];
im2 = rand(3);
找出im1等于1的地方:
idx = im1 == 1;
idx 现在是一个逻辑矩阵,可以作为im2 的掩码:
idx =
0 0 1
1 0 0
0 0 1
对im2的所有对应像素做点什么:
im2(idx) = im2(idx) + 5;
另外,虽然我怀疑这是您要问的,但您可以使用 anonymous functions 定义您的函数 A:
A = @(x)(2.*x.^2 - x + 5)
im2(idx) = A(im2(idx))
【讨论】:
idx = im2(:,:,1) == (abs(im2(:,:,1) - 0.9)<=epsilon),但它并没有按预期工作。只是检索了一些像素。想法?
im2(idx) = im2(idx) + 5; 之类的操作时,似乎只在红色通道中添加了 5!知道可能是什么原因造成的吗?谢谢
[ri, ci] = find(...))然后应用它@ 987654337@。但这与您提出的问题不同。