clc
clear all
close all
M=3;%3*3的邻域窗口
N=3;
for iter = 1:156
iter
img = imread(['E:\pictest\',num2str(iter),'.jpg']);%读取图片
[m,n,s] = size(img);%读取图片
%I_gray=rgb2gray(img);
T=zeros(m,n);
%figure(1);imshow(I_gray);
I_gray=double(img);
for i=M+1:m-M
for j=N+1:n-N
max=1;min=255;
for k=i-M:i+M %当前像素周围的3*3区域中的最大值和最小值
for l=j-N:j+N
if I_gray(k,l)>max
max=I_gray(k,l);
end
if I_gray(k,l)<min
min=I_gray(k,l);
end
end
end
T(i,j)=(max+min)/2;%T矩阵用来记录每点像素的阈值
end
end
I_bw=zeros(m,n);
for i=1:m
for j=1:n %%二值化
if I_gray(i,j)>T(i,j)
I_bw(i,j)=255;
else I_bw(i,j)=0;
end
end
end
imwrite(I_bw, ['E:\pic\burnsen\', 'pic', num2str(iter),'.jpg']);
end
clear all
close all
M=3;%3*3的邻域窗口
N=3;
for iter = 1:156
iter
img = imread(['E:\pictest\',num2str(iter),'.jpg']);%读取图片
[m,n,s] = size(img);%读取图片
%I_gray=rgb2gray(img);
T=zeros(m,n);
%figure(1);imshow(I_gray);
I_gray=double(img);
for i=M+1:m-M
for j=N+1:n-N
max=1;min=255;
for k=i-M:i+M %当前像素周围的3*3区域中的最大值和最小值
for l=j-N:j+N
if I_gray(k,l)>max
max=I_gray(k,l);
end
if I_gray(k,l)<min
min=I_gray(k,l);
end
end
end
T(i,j)=(max+min)/2;%T矩阵用来记录每点像素的阈值
end
end
I_bw=zeros(m,n);
for i=1:m
for j=1:n %%二值化
if I_gray(i,j)>T(i,j)
I_bw(i,j)=255;
else I_bw(i,j)=0;
end
end
end
imwrite(I_bw, ['E:\pic\burnsen\', 'pic', num2str(iter),'.jpg']);
end