2

我实现了拜耳去马赛克,到目前为止效果很好,但速度很慢。我是 matlab 的新手,并且已经认为 for 循环通常是一种不好的做事方式。

那是我在伪代码中的算法,任何人都可以给我一个提示如何将它更多地matlabize吗?

pic = zero(width, height, 3)
for i=1:Width
   for j=1:Height
       if isbluevalue(i, j)
          pic(i,j) = getOtherTwoValues(...)
       if isredvalue(i,j)
          //do accordingly
       if isgreenvalue(i,j)
          //do accordingly
 end
end

有没有办法摆脱for循环?

4

2 回答 2

3

Matlab 中有一个内置函数可以进行拜耳去马赛克。

 RGB = demosaic(I, sensorAlignment);
于 2012-04-25T13:47:50.323 回答
1

您可以使用 Matlab 的逻辑索引来做您想做的事情。例如,你可以写

pic(isbluevalue(pic)) = getOtherTwoValues(...)

请注意,这仅适用于您的函数isbluevalue()适用于 pic 的元素,而不是数字ij.

如果这没有帮助,请更全面地解释您的需求。

于 2012-04-25T12:45:46.533 回答