2017-04-10 66 views
-1

我正在做我的手寫文字的圖形提取項目,在這裏我將一個二進制圖像分成相等的片段使用
C =(圖像寬度/ 10 )和R =(圖像圖像的高度/ 10)字圖像,其被劃分爲大小相等的'C×R'片段,對於每個片段sij(i = 1,...,C; j = 1,..., R)一個節點被插入到結果圖中,並由質心(xm,ym)的(x,y)座標來標記。正式地,我們計算段sij中前景像素的數量,而xw和yw表示sij中前景像素的x和y座標。如果一個段不包含任何前景像素,則不能確定質心,因此不會爲此段創建節點。如何連接圖像上的字圖像中的每個段的繪圖點

在我的代碼

我計算在各段質心,但我想每個節點連接在圖像上請幫助解決這個問題

clc; 
clear all; 
close all; 
X=imread('math.jpg'); 
imfinfo('math.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 = 5; 
h = 5; 
c=si/w; 
r=sj/h; 

% Skeletonised 
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); 
XX=mean(x); 
YY=mean(y); 
XXX(E)=CX; 
YYY(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 
plot(XX,YY, 'g*'); 
hold off 
在我的代碼

我得到的質心在每段

前景像素,這是我的輸出 output of my code

幫助我的圖像作爲節點添加繪圖點,從而導致圖形

編輯, input image

clc; 
clear all; 
close all; 
X=imread('math.jpg'); 
imfinfo('math.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); 

%Skeletonised 

kl=bwmorph(~I,'thin',inf); 
figure,imshow(kl) 

R(:,:)=kl(:,:); 
%grid size 
t1=10; 
D=100; 
I=1; 
U1=t1; 
J=1; 
U2=t1; 
E=1; 
t2=D/t1; 
%Z=1; 
for i=1:t2 
    for j=1:t2 
B(I:U1,J:U2)=R(I:U1,J:U2); 
[x,y]=find(B==1); 
CX=mean(x); 
CY=mean(y); 
CXXX(E)=CX; 
CYYY(E)=CY; 
CXX(i,j)=CX; 
CYY(i,j)=CY; 

T(I:U1,J:U2)=B(I:U1,J:U2); 
    J=J+t1; 
    U2=U2+t1; 
E=E+1; 
clear B x y 

    end 

I=I+t1; 
U1=U1+t1; 
J=1; 
    U2=t1; 

end 
%plot and grid 
figure,imshow(R) 
hold on 
M = size(R,1); 
N = size(R,2); 

a=t1; 
b=t1; 
for k = 1:a:M 
    x = [1 N]; 
    y = [k k]; 
    plot(x,y,'Color','white'); 
    set(findobj('Tag','MyGrid'),'Visible','on') 
end 
for k = 1:b:N 
    x = [k k]; 
    y = [1 M]; 
    plot(x,y,'Color','white'); 
    set(findobj('Tag','MyGrid'),'Visible','on') 
end 

plot(CXX,CYY, 'g*'); 
hold off 

先生請儘量將編輯的代碼。

+0

您還可以提供樣本輸入圖像嗎?如果代碼運行,代碼更容易理解。 – m7913d

+0

我想情節(XX,YY,'k - ','Markersize',10); – m7913d

+0

先生,我插入我的輸入圖像和編輯代碼請運行我的code.and幫助我。 – shivu

回答

0

如果我正確理解你的問題,你想要draw lines之間的綠星。這可以被完成如下:

plot(CYY(isfinite(CYY)),CXX(isfinite(CYY)), 'g*-'); 

我使用logical indexing刪除無效的值,否則,不是所有的連接都繪製。

enter image description here

+0

謝謝你這張圖片是否有任何算法使用最小生成樹aooroach來連接這些點。 – shivu

+0

提問前請使用您最喜愛的搜索引擎。我認爲幾天前你的一位同事已經提出過同樣的問題:http://stackoverflow.com/questions/43259896/how-to-connect-edges-to-nodes-in-a-image-using-minimum-spanning -tree-approach?rq = 1 – m7913d

+0

先生,我們無法找到使用最小生成樹方法將邊添加到點的方法。 – shivu