1. 程式人生 > >紅外影象處理之直方圖均衡的matlab原始碼與效果驗證

紅外影象處理之直方圖均衡的matlab原始碼與效果驗證

紅外影象是熱輻射成像,由於場景中的目標與背景的溫差相對較小,紅外影象的動態範圍大、對比度

低,信噪比也較可見光影象的低。為了能夠從紅外影象中正確地識別出目標,必須對紅外影象進行增強處理。一般紅外探測器的效能區分於材料,氧化釩等高階的靈敏度高相應的價格較貴,多晶矽的一般靈敏度要差但價格相對較低,也不會太受禁運封鎖購買比較方便,也是非製冷做成的熱像儀沒有製冷電路會節省成本、降低功耗和減小體積。一般探測精度為50mk左右,常溫下的溫度變化只有二三十度,產生的灰度響應變化一般也就幾十個灰度級。這樣的影象很難區別出各種影象內部的物體,所以需要進行真個動態範圍的拉伸,將影象處理的更家銳,影象清楚容易辨識。

clear;

clc;

%%%%%%%%%%%%%%單幀影象取值%%%%%%%%%%%%%

save3 =zeros(3,2,'uint16');

fid = textread('3006b.txt','%s');

fid1 = hex2dec(fid);

save3(:,:) = reshape(fid1,3,2);

sample1 = zeros(3,2,'double');

sample1 = save3(:,:);

%%%%%%%%%%%%%%%找出最大灰度%%%%%%%%%%%%%

line_buff = zeros(1,6,'uint16');

line_buff = reshape(sample1,1,6);

for i= 2:6

   max = line_buff(1,1);

   if line_buff(1,i) > max

       max = line_buff(1,i);

   end

end    

%%%%%%%%%%%%%%%找出最小灰度%%%%%%%%%%%%%

for i= 2:6

   min = line_buff(1,1);

   if line_buff(1,i) < min

       min = line_buff(1,i);

   end

end

%%%%%%%%%%%%%%%設定拉伸的灰度級數%%%%%%%%%%%%%%%%%%%

H_tho = 256;

L_tho = 0;

%%%%%%%%%%%%%%%計算拉伸比率%%%%%%%%%%%%%%%%%%%%

sample2 = zeros(1,6,'uint16');

rat = (H_tho-L_tho)/(max-min);

for i=1:6

   sample2(1,i) = line_buff(1,i)*rat;

end

for i= 1:6

   sample2(1,i) =sample2(1,i) - min*rat;

end

%%%%%%%%%%%%%%%%顯示效果%%%%%%%%%%%%%%%%%%%%%%%%

sample3 = reshape(sample2,3,2);

subplot(2,2,1),imshow(uint8(sample1));title('拉伸前');

subplot(2,2,2),imshow(uint8(sample3));title('拉伸後');

wKiom1MDbUaD0SOoAADsZlFR0Fk416.jpg

資料檔案上傳嫌麻煩就沒傳,有興趣的可以找我索取

QQ:356636122

本文出自 “風雨如晦雞鳴不已” 部落格,謝絕轉載!