问题
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