I have a basic level of image processing/matlab. I need to write an m file to complete skeletisation of a binary image of the word "skeleton" in white on a black background. It is to be done without using matlab functions for skeletising. thank you

3 ビュー (過去 30 日間)
Hi, I have a basic level of image processing/matlab. I need to write an m file to complete skeletisation of a binary image of the word "skeleton" in white on a black background. It is to be done without using matlab functions for skeletising. possibly one that will work on all binary images. Thanks
my code is as follows. I created it using an algorithm found online and adapted it to this:
clear all
I=imread('skeleton.jpg')
I = im2double(I);
I = im2bw(I);
figure, imshow(I);
H = size(I, 1); %height of image
W = size(I, 2); %width of image
for i = 2:H-1
for j = 2:W-1
Neighbour = [I(i-1,j) I(i-1,j+1) I(i,j+1) I(i+1,j+1) I(i+1,j) I(i+1,j-1) I(i,j-1) I(i-1,j-1)];
Surrounds = [I(i-1,j) I(i-1,j+1) I(i,j+1) I(i+1,j+1) I(i+1,j) I(i+1,j-1) I(i,j-1) I(i-1,j-1) I(i-1,j)];
Transition = nnz(diff(Surrounds)==1);
Non_zero = sum(Neighbour(:)==1);
if Transition==1 && (2<=Non_zero<=6) && (I(i-1,j)*I(i,j+1)*I(i+1,j)==0) && (I(i,j+1)*I(i+1,j)*I(i,j-1)==0)
I(i,j)=0;
end
end
end
figure, imshow(I)
  5 件のコメント
Image Analyst
Image Analyst 2013 年 4 月 18 日
The restriction that you can't use the built-in MATLAB function that calculates the skeleton. I mean, why not use it?
Ralph Dunne
Ralph Dunne 2013 年 4 月 18 日
It is a project that I am completing and as part of the project no functions from matlab for the operation may be used. It must be built by creating my own m file which will complete the skeletising of the image. I am stuck from here I found this algorithm online at the link below under Parallel skeletonization algorithm 1 but I seem to have made a mistake as it does not fully work. It seems quite basic when explained in the article but I seem to have a problem with my coding if you have any ideas to help I would really appreciate it.

サインインしてコメントする。

回答 (1 件)

Thomas
Thomas 2013 年 4 月 18 日
The grassfire transform would be easy to implement: http://en.wikipedia.org/wiki/Grassfire_Transform
Be aware that this algorithm is not exceptionally fast. However, it can be parallelized.
  1 件のコメント
Ralph Dunne
Ralph Dunne 2013 年 4 月 18 日
thanks, I used the example algorithm found in the grassfire link you answered with. I am finding it hard to implement this algorithm. I am not a great coder. does the grassfire return a distance transfrom? the link below is the result I am trying to complete

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCamera Calibration についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by