Pregunta

I would like to know something about wrinkles detection in Matlab:

here is an example image

I thought of using Hough Transform but it could not work for this. Is there any idea that I could processed further?
I even thought of using sobe, canny and other edge detector. But when I read their documentation, they are not really an edge detector.

close all
clear all
clc
Image = imread('imagename.jpg');
GrayImage = rgb2gray(Image);
FiltImage = edge(GrayImage ,'sobel');
imshow(FiltImage)

i want all the wrinkles as white pixel and the rest of the image as black.

¿Fue útil?

Solución

I borrowed the method used in vessel detection from the paper Hessian-based Multiscale Vessel Enhancement Filtering by Frangi et al. There is a Matlab implementation, FrangiFilter2D, that works on 2D vessel images. And I tried to apply it to wrinkle detection.

options = struct('FrangiScaleRange', [5 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,...
           'FrangiBetaTwo', 500, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(GrayImage), options);
imshow(uint8(outIm/max(outIm(:))*256))

It looks better than pure edge extraction, though some improvement is need by (i) tuning the parameters, and (ii) combining with other image processing strategies.

enter image description here

Otros consejos

Matlab has a ton of fun tools that you can essentially play with in combination, to detect the wrinkles. Here are some things to look at. 1). Study thresholding and see how it applies to your situation (this will help you a lot because of the contrast that exists between the wrinkles and the rest of the face color).

2). Remember you can add and subtract images.

3).Study watershed algorithm if you feel adventurous.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top