📄 imagepartition.m
字号:
%**************************************************************************
% filename: ImagePartition.m
% function: 实现图像的区域分割,把答题区域有效分割出来
% date: 2006.01.17
% programmer: Lj
%**************************************************************************
function ImagePartition()
clc,clear;
% 1.读入图像
% 2.计算区分特征 val_m 和 val_n
% 3.分割算法
IntervalSet=3; % 设置分割区间
SignalDiff=60;
I=imread('D:\成员资料\葛军成\测试图象060116\测试\test_9.jpg');
ImInfo=length(size(I));
if ImInfo==3
I=rgb2gray(I);
end
I=double(I);
[m,n]=size(I);
sample_m=fix(m/IntervalSet);
sample_n=fix(n/IntervalSet);
val_m=zeros(sample_m,1);
for i=1:sample_m
val_m(i)=sum(I((i-1)*IntervalSet+1,:))/n;
end
val_n=zeros(sample_n,1);
for j=1:sample_n
xyz=I(:,(j-1)*IntervalSet+1);
val_n(j)=sum(xyz)/m;
end
% 在这里进行 行分割
for i=1:sample_m-1
val_m(i)=abs(val_m(i+1)-val_m(i));
end
big_index=find(val_m>SignalDiff),
big_index_org=big_index; % 做一个备份
if length(big_index)==0 | length(big_index)==1
x_begin=1;
x_end=m;
elseif length(big_index)==2
x_begin=big_index(1)*IntervalSet+IntervalSet;
x_end=big_index(2)*IntervalSet-IntervalSet;
else
for i=1:length(big_index)-1
big_index(i)=big_index(i+1)-big_index(i);
end
big_index(length(big_index))=[]; % 去掉没有参与的最后一个元素
big_index_max=max(big_index);
big_index_index=find(big_index==big_index_max);
x_begin=big_index_org(big_index_index)*IntervalSet+IntervalSet,
x_end=big_index_org(big_index_index+1)*IntervalSet-IntervalSet,
end
I1=I(x_begin:x_end,:);
I1=uint8(I1);
imshow(I1);
return
val_m(sample_m)=[];
bar(val_m),pause,
x1=min(val_m);
x1_index=find(val_m==x1);
x_begin=x1_index*IntervalSet+IntervalSet;
val_m(x1_index)=[];
x2=min(val_m);
x2_index=find(val_m==x2);
x_end=x2_index*IntervalSet-IntervalSet;
y1=min(val_n);
y1_index=find(val_n==y1);
y_begin=y1_index*IntervalSet+IntervalSet;
val_n(y1_index)=[];
y2=min(val_n);
y2_index=find(val_n==y2);
y_end=y2_index*IntervalSet-IntervalSet;
ImCut=I(x_begin:x_end,y_begin:y_end);
size(ImCut)
imshow(ImCut),pause,
subplot(2,1,1),plot(val_m),title('m');
subplot(2,1,2),plot(val_n),title('n');
save data0117.mat val_m val_n;
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -