Draw partial white border line in an object in grayscale

조회 수: 4 (최근 30일)
Demons
Demons 2013년 1월 25일
Hi all. This could be easy to some (or probably most) but sadly not me.
White blob of above image (if that matter): http://www.imagesup.net/?di=1213591337642
And here's what the output image should be: http://www.imagesup.net/?di=1113591338872
Is that possible to add/draw that white line as per output image?
Your helps are much appreciated.
DE

채택된 답변

Image Analyst
Image Analyst 2013년 1월 26일
How did you draw the red line in the first place? Since you have that (or SHOULD have that), it will be easy to just scan the image writing a white dot at each location.
  댓글 수: 7
Image Analyst
Image Analyst 2013년 1월 28일
Well I think you're wrong - you're doubling the amount of code. But this is how you do that
First draw the dividing line using imfreehand() or however you're doing it. Convert the image to true color. Take the coordinates and write the red path as a colored curve into the image. Now, instead of masking out that portion and being done with everything, save the image. You're doing all of this already. Now for the next step (which normally wouldn't be necessary).
Read in the color image. Take the red channel and the blue channel and find the red line by doing
redPixels = redChannel == 255 & blueChannel == 0;
Now scan the image column by column using find to find the lowest row that is red
[rows columns] = size(redPixels);
lowestRow = columns * ones(1, columns); % Array to hold lowest row.
for col = 1 : columns
lowRow = find(redPixels(:, col), 1, 'last')
if ~isempty(lowRow)
% There is some red in that column. Save it.
lowestRow(col) = lowRow;
end
end
Now you have the location of the bottom of that wide red swath you drew. Essentially it will be the same as the path you drew with imfreehand() but a little lower since you drew in a thick red path. Now you can use poly2mask() to create a mask from those coordinates and mask it off using code I already gave you above.
Demons
Demons 2013년 1월 28일
Thanks IA. Your input, time and effort are much appreciated. I'll try to sort this out and will let you know should I stuck somewhere.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Thorsten
Thorsten 2013년 1월 25일
help imfreehand
  댓글 수: 3
Image Analyst
Image Analyst 2013년 1월 25일
What!?!? What kind of requirement or constraint is that? Why do you say that? Do you want to solve the problem or not? Yes, there are ways but I want to hear about these crazy constraints first. There's clearly something you haven't shared with us for some reason, and we don't want to waste time only to have you tell us "I forgot to tell you, I'm not allowed to do that either."
Demons
Demons 2013년 1월 26일
That's it really. I have to deal with thousands of those images, further manual interaction will results the same time taken to segment the whole area manually hence why the limitation.
Excuse my ignorance as I'm a beginner matlab user and dont properly know the rules of thumb as to what's the best lines to ask

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 3-D Volumetric Image Processing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by