A %原矩陣
B=A(1:10,1:10); %第一行到第十行第一行到第十列的子矩陣
C=A(10:100,20:300); %第十行到第一百行第二十列到第三百列的子矩陣
f=imread("car_2.bmp"); % 讀取影象;
[x,y]=size(f); % x,y為影象的行數和列數;
m=20;n=30; % 手動定義子影象的行數和列數;
s=zeros(m,n); % s表示子矩陣;
t=zeros(10,10); % t為閾值矩陣;
rx=1:m:x;
cy=1:n:y; % rx和cy是子影象左上角的座標;
rowhigh=rx+m-1; % rowhigh和colhigh是子影象歷遍的終點,即為右下角的座標;
colhigh=cy+n-1;
for r=1:10
for c=1:10
s=f(rx(r):rowhigh(r),cy(c):colhigh(c));
t(r,c)=graythresh(s); % 用Otsu演算法求每幅子影象的最佳閾值,儲存在閾值矩陣t中;
end
I=imresize(t,[x,y]); % 插值後的閾值矩陣I與原影象的行數和列數相等;
I=reshape(I,(size(f)));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
H=f>I; % 將閾值矩陣與影象矩陣比較,將亮的部分提取出來;
g=H*255;
figure(1);
imshow(f);title("原始影象") % 顯示原影象;
figure(2);
imshow(g);title("處理結果") % 顯示處理後的結果;
A %原矩陣
B=A(1:10,1:10); %第一行到第十行第一行到第十列的子矩陣
C=A(10:100,20:300); %第十行到第一百行第二十列到第三百列的子矩陣
f=imread("car_2.bmp"); % 讀取影象;
[x,y]=size(f); % x,y為影象的行數和列數;
m=20;n=30; % 手動定義子影象的行數和列數;
s=zeros(m,n); % s表示子矩陣;
t=zeros(10,10); % t為閾值矩陣;
rx=1:m:x;
cy=1:n:y; % rx和cy是子影象左上角的座標;
rowhigh=rx+m-1; % rowhigh和colhigh是子影象歷遍的終點,即為右下角的座標;
colhigh=cy+n-1;
for r=1:10
for c=1:10
s=f(rx(r):rowhigh(r),cy(c):colhigh(c));
t(r,c)=graythresh(s); % 用Otsu演算法求每幅子影象的最佳閾值,儲存在閾值矩陣t中;
end
I=imresize(t,[x,y]); % 插值後的閾值矩陣I與原影象的行數和列數相等;
I=reshape(I,(size(f)));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
H=f>I; % 將閾值矩陣與影象矩陣比較,將亮的部分提取出來;
g=H*255;
figure(1);
imshow(f);title("原始影象") % 顯示原影象;
figure(2);
imshow(g);title("處理結果") % 顯示處理後的結果;