I have ported most of the 24 methods from the SVG composition standard (2009, https://www.w3.org/TR/2009/WD-SVGCompositing-20090430/) in Matlab but four methods (like color-dodge) relay on comparing images within an if-statement (like: if Sca == Sa && Dca == 0 ...) but Matlab views this as nonscalar operators.
Sc, Dc are RGB images Sa, Da are gray masks that represents alpha channels Dca, Sca are pre-multiplied images: Dca = Dc .* Da; Sca = Sc .* Sa;
if strcmp(compo_meth, 'color-dodge') == 1;
if Sca == Sa && Dca == 0
Dca = (1 - Da) .* Sca;
elseif Sca == Sa
Dca = Sa .* Da + (1 - Da) .* Sca + (1 - Sa) .* Dca;
elseif Sca < Sa
Dca = Sa .* Da .* min(1, Dca/Da .* Sa/(Sa - Sca));
end
Da = Sa + Da - Sa .* Da;
end
error in if Sca == Sa && Dca == 0
Operands to the || and && operators must be convertible to logical scalar values