我在手绘文字中进行图形提取的项目在这里我用二分法将二进制图像分成相等的段 C =(图像图像的宽度/ 10)和R =(图像图像的高度/ 10)字图像被分成相同大小的'C x R'段,每个 段sij(i = 1,...,C; j = 1,...,R)将节点插入到结果图中并用质心的(x,y)坐标标记(xm, ym)形式上,我们计算片段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 :(得分:0)
如果我理解你的问题,你想在绿色星星之间draw lines。这可以通过以下方式完成:
let oldValue = UserDefaults.standard.integer(forKey: "HIGHSCORE")
let newValue = oldValue - 20
UserDefaults.standard.set(newValue, forKey: "HIGHSCORE")
我使用logical indexing删除了无效值,否则不会绘制所有连接。