-
-
Measured performance, shown openly: Dice and AUC on 250 ISIC images, plus the quality gate's limits.
-
Low band (18.4/100): hair removal, Otsu segmentation, then ABCD-style features. A low score never rules out melanoma.
-
Failure case: the segmentation grabbed the image edge, so SkinLens withholds the result instead of guessing.
-
Moderate band (42.6/100): every feature value (asymmetry, border, color groups) is shown, so you can see why.
-
High band (71.0/100): irregular border and asymmetry push the score up. A visual-irregularity band, not a cancer probability.
Inspiration
Most skin-cancer AI is a black box. A person gets a score but can't see why. I wanted to see how far transparent, classical image processing could go, where every feature the tool uses is one you can see and question.
What it does
SkinLens takes a dermoscopy photo and walks through the full chain: hair removal, Otsu segmentation, and ABCD-style features (asymmetry, border compactness, color variation, relative diameter). It ends in a Low / Moderate / High feature-based risk band, never a cancer probability. If image quality is too poor, it refuses to score and flags the case "Unreliable" instead of guessing.
How we built it
Python, OpenCV, scikit-image and Streamlit. No deep learning. The pipeline is: preprocess and remove hair, segment the lesion, compute the ABCD-style features, combine them into a risk band, and show every step in the app. Unit tests pin the quality-gate warnings and the image-resize contract.
Challenges we ran into
Hair and lighting break segmentation, so a lot of work went into hair removal and quality gates. Some lesions simply segment badly, and the README documents those real failure cases.
Accomplishments that we're proud of
Honest evaluation. On 250 held-out ISIC images, segmentation reaches a mean Dice of 0.66 (median 0.77). The risk band's melanoma discrimination is modest (ROC-AUC 0.62 vs 0.5 for chance), and I report that as it is. The quality gate flags 35 of 250 images but catches only 24 of the 84 segmentation failures, and I say that openly too. The app also knows when not to answer.
What we learned
Classical methods are very explainable but have a real accuracy ceiling. Being upfront about limits matters more than a flashy number, especially in a health setting.
What's next for SkinLens
Better segmentation on hard cases, a larger and more varied evaluation, and a clearer explanation view for each feature. It stays a screening aid and educational prototype, not a diagnosis.