Just some random thoughts about your situation.
While html canvas has several layout modes, the canvas does not have a mixed image.
However, Firefox does! This is a multiplication extension for the layout:
ctx.globalCompositeOperation = 'multiply';
The main canvas libraries that have SVG β Canvas translators have FabricJS and KineticJS, but not one of them has implemented this multiplier filter yet. Of the two, FabricJS is larger than SVG capable at this point, and I see that Kangax (creator of FabricJS) commented on your post. You could ask him really nicely if he added a multiple filter;)
Since you have access to Adobe Illustrator, you can try Mike Swanson's impressive SVG β Canvas translator. I donβt know if it handles image filters, but it does an impressive job of accepting standard Adobe Illustrator SVG files and creating Canvas drawings (a very impressive application if you ask me!): Http://blog.mikeswanson.com/post/29634279264 / ai2canvas
Thinking inside SVG - you should check out the SVGJS library:
SVGJS is an SVG library that allows you to manage SVG elements by identifier.
https://svgdotjs.imtqy.com/
There is also an extension that imports from Illustrator:
https://svgdotjs.imtqy.com/importing-exporting/
And finally, SVGJS also has an extension that performs a dark image filter (not multiplying, but closing)
https://svgdotjs.imtqy.com/plugins/svg-filter-js/
If you despair ... (you are unlikely to get despair!)
You can "roll up your own" multiple filter by capturing canvas pixels with context.getImageData and then run this function for each of the r, g, b pixels you want to propagate.
function multiply(top, bottom){ return(top*bottom/255; }
Good luck