how to connect edges to nodes in a image using minimum spanning tree approach

a 夏天 提交于 2020-01-15 01:54:08

问题


I am doing my project on graph matching in hand written image, i want to represent a given word image in graph, am using the below algorithm

Algorithm:

input: Binary image B, Grid width w, Grid height h
Output: Graph g = (V, E) with nodes V and edges E
1: function Grid(B,w,h)
2: for i ← 1 to number of columns C = Width of B/w do
3: for j ← 1 to number of rows R = Height of B/h do
4: V = V ∪ {(xm, ym) | (xm, ym) is the centre of mass of segment sij}
5: for Each pair of nodes (u, v) ∈ V × V do
6: E = E ∪ (u, v) if associated segments are connected by NNA, MST, or DEL
7: return g

am already find the center of mass using this am plotting the points after plotting the points i do not know how to add the edges to using minimum spanning tree approch

this my code

clc;
clear all;
close all;
X=imread('i2.jpg');
imfinfo('i2.jpg')
figure,imshow(X)

b = imresize(X,[100,100]);
si = size(b,1);
sj = size(b,2);
figure;imshow(b);

% Binarization
th = graythresh(b);
I = im2bw(b,th);

w = 10;
h = 10;
c=si/w;
r=sj/h;
kl=bwmorph(~I,'thin',inf);
figure,imshow(kl)

R(:,:)=kl(:,:);
I=1;
U1=w;
J=1;
U2=h;
E=1;
for i=1:r
  for j=1:c
B(I:U1,J:U2)=R(I:U1,J:U2);
[x,y]=find(B==1);
CX=mean(x);
CY=mean(y);
CXX(E)=CX
CYY(E)=CY
T(I:U1,J:U2)=B(I:U1,J:U2);
J=J+w;
U2=U2+h;
E=E+1;
clear B x y    
    end

I=I+w;
U1=U1+h;
J=1;
U2=h;

end
imshow(R)
hold on

hold on
plot(CYY,CXX,'.c')
hold off
% CXX(isnan(CXX)) = [];
% CYY(isnan(CYY)) = [];

r = imread('empty.jpg');
n = imresize(r,[100,100]);
figure,imshow(n);
hold on

hold on
plot(CYY,CXX,'.k')
hold off

input image expected output

am plotting using the CXX and CYY values i do not know how to add the edges to plotted points using minimum spanning tree approach please give me some code it will help me to complete my project


回答1:


Hard to tell from your question, but I'm assuming you want to represent a graph where all nodes are at coordinates [CXX,CYY] and the weight matrix is the distance between node i and node j

You can generate an adjacency matrix with pdist2()

A = pdist2([CXX,CYY],[CXX,CYY]);

Build a graph based A (note that this graph carries no information about original location, only distances)

G = graph(A,...);

Determine the MST for G

T = minspantree(G); 

T.Edges will be a table of nodes i and k that are included in the MST, as well as their distance weight. You can use graph functions to visualize this, although it will only factor distance vectors, not original coordinate locations



来源:https://stackoverflow.com/questions/43259896/how-to-connect-edges-to-nodes-in-a-image-using-minimum-spanning-tree-approach

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!