1. 程式人生 > >MATLAB 求兩張大小完全相同二值影象影象的白色區域重疊面積

MATLAB 求兩張大小完全相同二值影象影象的白色區域重疊面積

如下圖,兩副大小完全相同的二值影象,現求取白色區域的重疊面積


左側影象為test01.jpg,右側為test02.jpg。思路為

1.使用imsubtract將兩副影象進行相減操作,假設為test01-test02,則imsubtract(test01,test02),相減之後如下圖


2.areaTest01-上圖白色區域的面積,即為二者重疊區域的面積。

1°:讀取兩副影象,並將其轉換為二值影象

function [ bw ] = readBinary( imageName )
%UNTITLED3 此處顯示有關此函式的摘要
%   讀取影像,並轉化為二值影象
image=imread(imageName);
bw=im2bw(image);
end

呼叫上述函式,完成兩副影象的讀取以及轉換為為二值影象

bw01=readBinary('test01.jpg');

bw02=readBinary('test02.jpg');

2°:重疊區域的求取

首先設定一個面積求取函式

function [ sum_White ] = Area( binaryima_Name )
%UNTITLED 此處顯示有關此函式的摘要
%   求取轉換為二值影象的影象面積
sum_White=sum(sum(binaryima_Name==1));
end

分別求取test01、相減區域的面積

area01=Area(bw01);
area02=Area(bw02);
%相減操作
imSubtract=imsubtract(bw01,bw02);
%轉換為二值影象
bwSubtract=im2bw(imSubtract);
%求取面積
areaSub=Area(bwSubtract);
%%計算兩張影象重疊區域
areaOverlap=area01-areaSub;