⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagepartition.m

📁 对文档图像进行分割
💻 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 + -