資源簡介
函數(shù)用于直方圖匹配
輸入:參數(shù)一:待匹配的JPG、BMP等標準格式彩色圖像;參數(shù)二:JPG、BMP等標準格式彩色圖像,用于匹配
輸出:原始圖像、原直方圖、匹配(規(guī)定化)后的圖像、匹配(規(guī)定化)后的直方圖
返回值:直方圖匹配后的灰度圖像,進行變換的向量
每一個步驟都提供詳細注釋
代碼片段和文件信息
function?[image_out?T3]?=?histmatch(origfiledestfile)
%函數(shù)用于直方圖匹配??
%輸入:參數(shù)一:待匹配的JPG、BMP等標準格式彩色圖像;參數(shù)二:JPG、BMP等標準格式彩色圖像,用于匹配
%輸出:原始圖像、原直方圖、匹配(規(guī)定化)后的圖像、匹配(規(guī)定化)后的直方圖
%返回值:直方圖匹配后的灰度圖像,進行變換的向量
%?Level為灰度級別
%?T1?T2分別為輸入圖像,模板直方圖的均衡化用到的變換向量
%?T3為輸入圖像匹配模板直方圖用到的變換向量
orig3?=?imread(origfile);%orig?=?uint8(imread(origfile));
dest3?=?imread(destfile);
orig?=?rgb2gray(orig3);??%轉(zhuǎn)為灰度圖像
dest?=?rgb2gray(dest3);
level?=?256;
[mn]?=?size(orig);
image_hist?=?imhist(orig);??%得到輸入圖像的直方圖??imhist得到的是256*1的矩陣
image_out?=?orig;
%?求解T1
ac1?=?zeros(level?1);
T1?=?zeros(level?1?‘uint8‘);
ac1(1)?=?image_hist(1)?;?%復制輸入圖像直方圖的第一個數(shù)
for?i?=?2?:?level
????ac1(i)?=?ac1(i?-?1)?+?image_hist(i);??%累計直方圖
end
%ac1?=?ac1?*?(level?-?1);
for?i?=?1?:?256
????T1(i)?=?uint8(round((ac1(i))?/?(m?*?n)));%歸一化累計直方圖
end
?
%?求解T2
ac2?=?zeros(level?1);
T2?=?zeros(level?1?‘uint8‘);
dest_hist?=?imhist(dest);????%得到匹配圖像的直方圖
ac2(1)?=?dest_hist(1);
for?i?=?2?:?level
????ac2(i)?=?ac2(i?-?1)?+?dest_hist(i);??%累計直方圖
end
%ac2?=?ac2?*?(level?-?1);
[rc]?=?size(dest);??
for?i?=?1?:?256
????T2(i)?=?uint8(round((ac2(i))?/?r/c));??%歸一化累計直方圖
end
?
%?求解T3
%?T1映射到T2^(-1)時,若有多個值,選取最小的那個值。
%?產(chǎn)生0?到?255?之間的256個點,即產(chǎn)生012...255的大小為256的數(shù)組
temp?=?zeros(level?1?‘uint8‘);
T3?=?T1;
for?i?=?1?:?256
????for?j?=?1
- 上一篇:(212)和(317)卷積碼編解碼的MTALAB仿真
- 下一篇:雷達MATLAB仿真
評論
共有 條評論