Я перенес большинство из 24 методов из стандарта композиции SVG (2009, https://www.w3.org/TR/2009/WD-SVGCompositing-20090430/) в Matlab, но четыре метода (например, color-dodge) используют для сравнения изображений в операторе if (например: if Sca == Sa && Dca == 0 ...) но Matlab рассматривает это как нескалярные операторы.
Sc, Dc - изображения RGB
Sa, Da - серые маски, представляющие альфа-каналы.
Dca, Sca - это предварительно умноженные изображения:
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
ошибка в
если Sca == Sa && Dca == 0
Операнды к || и операторы && должны быть преобразованы в логические скалярные значения