How to extract features from segmented skin cancer images
이전 댓글 표시
Hi all,
I have a data of melanoma images, I segmented them now I need to extract the following features from them :
1-Asymmetry feature 2-Color variation feature 3-Border feature 4-Diameter feature To use them in the ABCD rule for melanoma detection
Could anyone help me to do this job please? Or have a MATLAB code to calculate these features? Thanks in advance.
댓글 수: 1
narayana reddy
2015년 12월 24일
which method is used for the segmentation accurately
채택된 답변
추가 답변 (3개)
Image Analyst
2013년 12월 22일
0 개 추천
There are a lot of algorithms here: http://iris.usc.edu/Vision-Notes/bibliography/medical899sk.html#Medical%20Applications%20--%20Skin%20Cancer,%20Melanoma,%20Skin%20Lesions Pick one and code it up. Once you've identified the cancer regions, you can do the ABCD measurements with standard image processing, like is shown in my Image Segmentation tutorial. http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862
댓글 수: 13
hamed abdulaziz
2013년 12월 22일
편집: Image Analyst
2013년 12월 22일
Image Analyst
2013년 12월 22일
편집: Image Analyst
2013년 12월 22일
First threshold to get the binary image. Then call bwboundaries() to get the x,y coordinates of the boundary. Then call regionprops() to find the centroid and find the distance from the centroid to each boundary coordinate and find the variation in that distance. You also might want to compute the circularity = perimeter^2 / (4*pi*area). I'm not sure of exactly how the medical field defines asymmetry. Can you tell me what formula they use?
hold on;
boundaries = bwboundaries(binaryImage);
numberOfBoundaries = size(boundaries, 1);
for k = 1 : numberOfBoundaries
thisBoundary = boundaries{k};
plot(thisBoundary(:,2), thisBoundary(:,1), 'g', 'LineWidth', 2);
% Compute distances
xCentroid = measurements(k).Centroid(1);
YCentroid = measurements(k).Centroid(2);
distances = sqrt((thisBoundary(:,2)-xCentroid)^2 + (thisBoundary(:,1)-yCentroid)^2);
SDdistances(k) = std(distances);
end
hold off;
hamed abdulaziz
2013년 12월 22일
Image Analyst
2013년 12월 22일
Looks like you need to find AD, so find the angle using their formula or regionprops(), and then call imrotate to level the image. Then do the XOR like they say.
hamed abdulaziz
2013년 12월 22일
Image Analyst
2013년 12월 22일
Use regionprops to calculate the area, angle, and bounding box. Use imrotate to rotate so that the major axis is hirizontal. Then get the top half and bottom half of the image using regular indexing like I'm sure you know. Then use flipup and xor() to find the difference like they wanted you to. That's basically it step by step. You're a smart engineer so I think you can put that into code.
hamed abdulaziz
2013년 12월 22일
편집: hamed abdulaziz
2013년 12월 22일
hamed abdulaziz
2013년 12월 22일
hamed abdulaziz
2013년 12월 22일
Image Analyst
2013년 12월 22일
편집: Image Analyst
2013년 12월 22일
It was in the tutorial I originally told you to look at. Here, I extract the lines from the tutorial and show them here:
% Get all the blob properties. Can only pass in originalImage in version R2008a and later.
blobMeasurements = regionprops(labeledImage, originalImage, 'all');
allBlobAreas = [blobMeasurements.Area];
You must already have binaryImage, otherwise you would not have been able to show a masked image like you did above.
hamed abdulaziz
2013년 12월 22일
hamed abdulaziz
2013년 12월 22일
Image Analyst
2013년 12월 22일
hamed said this in an "Answer" which I moved here because it was not an answer but was a comment:
bw=im2bw(seg_image);
STATS = regionprops(bw, 'Area','BoundingBox');
카테고리
도움말 센터 및 File Exchange에서 Biotech and Pharmaceutical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
