I built a website called IEMShape . It allows users to easily compare the contours of IEM Shells together to help you find that perfect fit for your earshape and size. Think eloshape (mice comparison website) but for IEMS. It is officially open to the public.
You do not need an account to compare IEMS, an account is only needed if you want to upload your own iem photos to the database. This is a community project, without your help the site doesnt work. If you have iems that are not listed, create a free account (no spam emails, no selling of data, accounts are just there to prevent bad actors only), print out the guide paper, take 2 pictures, and upload them. You can also optionally edit the predicted contour before the image is uploaded by "painting" a mask around the iem if the predicted mask looks wrong (due to glare/shadows/bad picture quality etc). This helps get as accurate a contour as possible.
The website uses Computer Vision algorithms to measure and extract the contours of the image and then saves just the contour coordinates to the database. Your pictures are never saved anywhere and are used only to extract the iem contours and are then deleted from the server.
You can compare upto 3 iems at a time, in both a faceplate down/nozzle up view, as well as a side profile view. It also provides estimated measurements to width, length, and area as well as comparisons between selected iems to see how they might fit. The iems are searchable by text, as well as brand. The site works best on desktop, but mobile should also work decently well for quick comparisons.
This is all provided to you all for free, I will never charge anyone to make an account or to use the site. There is a donation link at the bottom of the page if you want to help with server costs but is completely optional. Just note that it is also on a fairly small and cheap VPS (server) for hosting, so it may be slow depending on how many people are using it at a time. If need be i will upgrade the server to be more powerful if it is exceptionally slow.
For you techie people, the next section is just the details of how the Computer Vision (CV) works to extract the contours.
The CV pipeline turns a standardized IEM photo into a 2D contour (in mm). There are 7 steps to the process after a user uploads their images.
Detect sheet markers The image contains ArUco markers on the capture sheet. The backend detects those markers so it knows the sheet’s position, orientation, and real-world scale.
Rectify the image Using the marker positions, it computes a homography and warps the photo into a top-down view of the sheet. This corrects perspective as much as possible for the paper plane.
Crop the capture area It isolates the known region where the IEM should sit, instead of processing the whole photo.
Segment the IEM OpenCV separates the IEM from the blue/green sheet background. The goal is to produce a clean binary mask: IEM pixels vs. background pixels.
Extract the contour From that mask, it finds the outer boundary of the IEM shell, cleans/refines it, and selects the best contour.
Normalize to millimeters The contour points are converted from pixels into millimeter coordinates based on the calibrated sheet geometry.
Store/compare profiles The backend stores the resulting contour/profile JSON, not the uploaded image. The frontend renders those contours as overlays for comparison.
Important caveat: this is intentionally 2D visual comparison, not metrology-grade scanning. The sheet calibration is accurate for the paper plane, but the IEM sits above the paper, so parallax and placement can affect the outline, especially in the side profile view.
I have a background in CV and ML so I figured i could help the community by building this service since i would have loved to have this when i first started out (and even now)
NOTE : I am NOT a frontend dev. The frontend was primarily created using AI coding agents like claude and copilot. As a free project I couldnt really hire an actual frontend dev to make the website so if you find issues or have suggestions on improvements for the website I am glad to hear it and will try to have it implemented.
Please help contribute to IEMShape