如何使用最小生成树方法将边连接到图像中的节点
how to connect edges to nodes in a image using minimum spanning tree approach
我正在做手写图像中图形匹配的项目,我想在图形中表示给定的单词图像,我正在使用以下算法
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
我已经使用这个找到质心我在绘制点后绘制点我不知道如何使用最小生成树方法添加边
这是我的代码
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
我正在使用 CXX
和 CYY
值进行绘图我不知道如何使用最小生成树方法将边添加到绘图点请给我一些代码,它将帮助我完成我的项目
很难从你的问题中分辨出来,但我假设你想要表示一个图,其中所有节点都位于坐标 [CXX,CYY]
并且权重矩阵是节点 i
和节点之间的距离j
您可以使用 pdist2()
生成邻接矩阵
A = pdist2([CXX,CYY],[CXX,CYY]);
根据 A
构建图表(请注意,此图表不包含有关原始位置的信息,仅包含距离信息)
G = graph(A,...);
确定 G
的 MST
T = minspantree(G);
T.Edges
将是包含在 MST 中的节点 i
和 k
的 table,以及它们的距离权重。您可以使用图形函数来可视化它,尽管它只会影响距离向量,而不是原始坐标位置
我正在做手写图像中图形匹配的项目,我想在图形中表示给定的单词图像,我正在使用以下算法
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
我已经使用这个找到质心我在绘制点后绘制点我不知道如何使用最小生成树方法添加边
这是我的代码
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
我正在使用 CXX
和 CYY
值进行绘图我不知道如何使用最小生成树方法将边添加到绘图点请给我一些代码,它将帮助我完成我的项目
很难从你的问题中分辨出来,但我假设你想要表示一个图,其中所有节点都位于坐标 [CXX,CYY]
并且权重矩阵是节点 i
和节点之间的距离j
您可以使用 pdist2()
A = pdist2([CXX,CYY],[CXX,CYY]);
根据 A
构建图表(请注意,此图表不包含有关原始位置的信息,仅包含距离信息)
G = graph(A,...);
确定 G
T = minspantree(G);
T.Edges
将是包含在 MST 中的节点 i
和 k
的 table,以及它们的距离权重。您可以使用图形函数来可视化它,尽管它只会影响距离向量,而不是原始坐标位置