Делал такое.
Секрет в том, что размер img и svg совпадает до пикселя). Таким образом, сверху находится svg c разными полигонами и события при наведении вешаются именно на них.
Чтобы svg не плясал, у меня он был с абсолютным позиционированием и top, right, bottom, left: 0. У img и svg общий div, размеры которого зависят от img, их придерживается и svg.