-
大小: 2KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-05-16
- 語言: Matlab
- 標簽: Matlab;Otsu??
資源簡介
Otsu,大津法(最大類間方差)閾值分割。采用分塊思想,將一副圖像的灰度圖分成若干個子圖像,對每個子圖像進行Otsu閾值分割,再拼接。Matlab2016a

代碼片段和文件信息
%?分塊Otsu
clear?all;??%?清除所有變量??在function里不能使用
%?close?all;??%?關(guān)閉所有figure???在function里不能使用
clc;
[filenamepathname]=uigetfile({‘*.jpg;*.bmp;*.tif;*.png;*.gif‘‘All?Image?Files‘;‘*.*‘‘All?Files‘});?
tic;
t1?=?clock;
%?讀取圖像
I?=?imread([pathnamefilename]);
%?I?=?imread(‘F:\matlab2016\bin\pic\lena.jpg‘);
figure;
subplot(221);
imshow(I)title(‘原圖‘);
%?圖像灰度化
numel?=?numel(size(I));
if?numel>2
????I_gray?=?rgb2gray(I);
else
????I_gray?=?I;
end
subplot(222);
imshow(I_gray)title(‘灰度圖‘);
%?轉(zhuǎn)為雙精度
I_double?=?double(I_gray);
%?圖像大小
[m?n]?=?size(I_gray);
%?圖像塊大小?k*k
k?=?80;
z1?=?ceil(m/k);
z2?=?ceil(n/k);
for?i?=?1:z1????
????for?j?=?1:z2
????????if?i*k>m
????????????e1?=?m;
????????else
????????????e1?=?k*i;
????????end?
????????if?j*k>n
????????????e2?=?n;
????????else
????????????e2?=?k*j;
????????end???
%?????????分塊閾值
????????T?=?Otsu_Block_T(I_gray(k*(i-1)+1:e1k*(j-1)+1:e2));
????????for?x?=?k*(i-1)+1:e1
????????????for?y?=?k*(j-1)+1:e2
????????????????if?I_gray(xy)>T
????????????????????I_gray(xy)=255;
????????????????else
????????????????????I_gray(xy)=0;
????????????????end
????????????end
????????end
????end
end
subplot(223);
imshow(I_gray)title(‘分塊Otsu閾值分割‘);
disp([‘etime程序總運行時間:‘num2str(etime(clockt1))]);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1390??2017-08-31?11:16??Otsu_Block\Otsu_Block.m
?????文件?????????940??2017-08-31?11:16??Otsu_Block\Otsu_Block_T.m
?????目錄???????????0??2017-08-31?13:51??Otsu_Block\
評論
共有 條評論