MATLAB Answers

0

Radon transform and Prewitt filters for hair removal

Asked by hamed abdulaziz on 29 Sep 2013
Latest activity Commented on by Walter Roberson
on 9 May 2017
Hi All,
I'm working on dermoscopic images (skin cancer images)that contains a light and thick hair,how can detect the predominant orientation of hairs in the image by using Radon transform, followed by filtering the image by Prewitt filters using the orientation of existing hairs I tried to write this code :
if true
% %%Radon transform and Prewitt filters
rgbImage = imread('hair.bmp');
redChannel =rgbImage(:, :, 1);
greenChannel =rgbImage(:, :, 2);
blueChannel =rgbImage(:, :, 3);
theta = 0:180;
[R,xp] = radon(rgbImage,theta);
BW = edge(rgbImage,'prewitt',[],xp);
imshow(R)
imshow(BW)
end
but I've got this error message :
Error using edge>parse_inputs (line 607) Invalid input arguments.
Error in edge (line 190) [a,method,thresh,sigma,thinning,H,kx,ky] = parse_inputs(varargin{:});
Error in Untitled2 (line 12) BW = edge(rgbImage,'prewitt',[],xp);
I attached a bitmap image contains hair called (hair.bmp),could any one guid me please because I'm really stuck in my project,thanks in advance. Hamed

  1 Comment

Actually, it's not attached here.

Sign in to comment.

3 Answers

Answer by Image Analyst
on 29 Sep 2013

The documentation for edge() says:
Class Support
I is a nonsparse 2-D numeric array.
BW isa 2-D array of class logical.
rgbImage is not a 2D image - it's a 3D color image. You need to pass one of the color channels you extracted into edge(), not the full RGB image.
BW = edge(greenChannel,'prewitt',[],xp);

  8 Comments

hamed:
The help for edge() says this:
BW = edge(I,'prewitt',thresh,direction) specifiesthe direction of detection for the Prewitt method. direction is a string specifying whether to look for 'horizontal' or 'vertical' edges or 'both' (default).
The help for radon() says this:
[R,xp] = radon(...) returns a vector xp containing the radial coordinates correspondingto each row of R.
So edge() wants a string and you're passing in a double vector. Do you think that might cause problems?
my be ? how can I deal with a vector xp as a string?is that possible?
but I've got the same error !!! what the disappointed I have?!please guide me

Sign in to comment.


Answer by hamed abdulaziz on 29 Sep 2013

  1 Comment

use imclose operation for removing hair with disk size 2

Sign in to comment.


Answer by asma arafat on 9 May 2017

how i can remove eyebrows from an image to use edge detectors after that and i don't need eyebrows to detect as edge. any help!!?

  1 Comment

You should create a new Question for that.

Sign in to comment.