天天看點

使用matlab程式設計實作基于門檻值分割的掃描文檔二值化方法,MATLAB實作基于最大類間方差法的圖像分割算法...

clear

clc;

%% 選擇圖檔,并二值化

[fn,pn,fi]=uigetfile('*.jpg','選擇圖檔');

I=imread([pn fn]);

if ndims(I) == 3

I = rgb2gray(I);

end

% fxy = imhist(I, 256); %統計每個灰階值的個數

[counts,x] = imhist(I, 256) ;

figure;

subplot(2, 2, 1);

imshow(I, []); title('原圖')

%% 使用最大類間方差法得到門檻值

countsx=counts.*x;

sumI=sum(counts);

baifen=counts/sumI;

w0=zeros(1,length(x)); %A比B多一個元素,為1行,length(B)+1列的全0向量

u0=zeros(1,length(x));

u1=zeros(1,length(x));

w0(1)=baifen(1);

for i=2:length(x)

w0(i)=w0(i-1)+baifen(i); % A[k+1]=B[k]

end

for i=1:length(x)-1

u0(i)=sum(counts(1:i).*x(1:i))/sum(counts(1:i));

u1(i)=sum(counts(i+1:length(x)).*x(i+1:length(x)))/sum(counts(i+1:length(x)));

end

w1=1-w0;

all=w0.*w1.*(u0-u1).*(u0-u1);

[C2,p]=max(all);

p

p=p/255;

%% 使用門檻值法進行圖檔分割

image = im2bw(I, p); %小于門檻值的為黑,大于門檻值的為白

subplot(2, 2, 2);

imshow(image);

title('(b)圖像前景與背景區分明顯的分割結果')

效果:

使用matlab程式設計實作基于門檻值分割的掃描文檔二值化方法,MATLAB實作基于最大類間方差法的圖像分割算法...
使用matlab程式設計實作基于門檻值分割的掃描文檔二值化方法,MATLAB實作基于最大類間方差法的圖像分割算法...

參考文獻:

[1] 齊麗娜, 張博, 王戰凱. 最大類間方差法在圖像進行中的應用[J]. 無線電工程, 2006, 36(7):25-26.