Si desea "hágalo usted mismo" que sugeriría los siguientes pasos:
En primer lugar, esqueletizar (adelgaza la imagen hasta que todas las líneas son un píxel de grosor). Hay muchas maneras de hacer esto, y es un problema bien estudiado. Google para más información.
Ahora, comenzando en un píxel negro, recorra y trace el contorno de la imagen, un píxel cada vez. Usted agrega cada uno de estos segmentos a una lista de segmentos que delinean la forma (cada segmento será una línea simple de un píxel a su píxel adyacente). Ahora tiene el contorno de su forma como un polígono de muchos lados.
(paso posible en este punto: suavizar el contorno tirando cada vértice más cercano al promedio de sus vecinos)
Ahora, se utiliza un algoritmo de detección de esquina para encontrar las esquinas (echar un vistazo aquí: http: //visual.ipan.sztaki.hu/corner/node7.html).
Esto debería ser suficiente para identificar las formas que ha enumerado.
Si quiere ser más inteligente, también puede identificar los tipos de bordes que existen entre las esquinas. Si el segmento entre dos esquinas se mantiene dentro de un umbral de la línea recta entre ellos, lo trata como un borde de "línea recta". Si no lo hace, lo trata como un borde curvo.
Con las esquinas + borde recto/curvo, es probable que pueda detectar cualquiera de las formas que está buscando bastante bien.
Podría publicar ejemplos (screenshots) de las formas? –
He agregado algunas capturas de pantalla –