傳統的影象歸一化一般採用gamma標準化形式:
作用時將光照等印象因素有效的剔除
歸一化操作是對塊進行的,主要是為了使得特徵向量空間對光照陰影和變化具有魯棒性。
下面是matlab****)
clear;
clc;
img=imread('d:\lena.jpg');%位置
%% 1、灰度化
img=rgb2gray(img);%如果已經灰度化則刪掉
img=double(img);
figure;
imshow(img,);%顯示影象
step=8; %step*step個畫素作為乙個cell
[m1 ,n1]=size(img);%獲取影象尺寸
%改變影象尺寸為step的最近整數倍,要不然後面就會發生錯誤
img=imresize(img,[floor(m1/step)*step,floor(n1/step)*step],'nearest');
[m,n]=size(img);
% 1、伽馬校正
figure;
img=sqrt(img);
imshow(img,);%顯示影象
%% 下面是求邊緣,也就是濾波,求梯度
fy=[-1
01]; %定義豎直模板
fx=fy'; %定義水平模板,該符號為轉置
iy=imfilter(img,fy,'replicate'); %豎直邊緣
ix=imfilter(img,fx,'replicate'); %水平邊緣
ied=sqrt(ix.^2+iy.^2); %邊緣強度 求梯度的長度
iphase=iy./ix; %邊緣斜率,有些為inf,-inf,nan,其中nan需要再處理一下
figure; %% 建立乙個畫板
imshow(ied,); %顯示梯度提取後的值
%% 下面是求cell
orient=9; %方向直方圖的方向個數
angular=360/orient; %每個方向包含的角度數,劃分角度區間,0到40度乙個區間...
cell=cell(1,1); %所有的角度直方圖,cell是可以動態增加的,所以先設了乙個
%% 開始獲取orient個方向的特徵向量
ii=1;
jj=1;
fori=1:step:m-step %如果處理的m/step不是整數,最好是i=1:step:m-step
ii=1;
forj=1:step:n %注釋同上
tmpx=ix(i:i+step-1,j:j+step-1); %水平
%% 邊緣強度
tmped=ied(i:i+step-1,j:j+step-1);
%% 區域性邊緣強度歸一化
tmped=tmped/sum(sum(tmped));
%% 邊緣斜率區域性提取
tmpphase=iphase(i:i+step-1,j:j+step-1);
%% 建立直方圖
hist=zeros(1,orient); %當前step*step畫素塊統計角度直方圖,就是cell
%% 統計乙個塊裡面的梯度資訊
for p=1:step
for q=1:step
%% 判斷是不是乙個數字true for not-a-number.如果不是乙個數字,就歸零
ifisnan(tmpphase(p,q))==1
%因為會遇到0/0的情況
tmpphase(p,q)=0;
end%% 進行區間的劃分
ang=atan(tmpphase(p,q)); %atan求的是[-90 90]度之間
ang=mod(ang*180/pi,360); %全部變正,-90變270
if tmpx(p,q)<0
%根據x方向確定真正的角度
if ang<90
%如果是第一象限
ang=ang+180; %移到第三象限
endif ang>270
%如果是第四象限
ang=ang-180; %移到第二象限
endend
ang=ang+0.0000001; %防止ang為0
hist(ceil(ang/angular)) = hist(ceil(ang/angular))+tmped(p,q); %ceil向上取整,使用邊緣強度加權
endend
%% 方向直方圖歸一化
hist=hist/sum(hist);
cell=hist; %放入cell中
ii=ii+1; %針對cell的y座標迴圈變數
end jj=jj+1; %針對cell的x座標迴圈變數
end%% 下面是求feature,2*2個cell合成乙個block,沒有顯式的求block
[m2, n2]=size(cell);
feature=cell(1,(m2-1)*(n2-1));
fori=1:m2-1
forj=1:n2-1
f=;f=[f cell(:)' cell(:)' cell(:)' cell(:)'];
feature=f;
endendl=length(feature);
f=;for
i=1:l
f=[f;feature(:)'];
end
figure
mesh(f)
Hog特徵的簡單實現 matlab
hog特徵的簡單實現 針對hog特徵不做過多的解釋 可參考其他博主的原理介紹。本文是matlab版本的實現。該版本的hog特徵將影象resize為64 128 首先將rgb轉灰度圖 再進行伽馬校正 對伽馬校正後的影象做歸一化處理 為什麼這樣做,請參看其他博主具體的原理介紹 伽馬校正使用的是 open...
Q learning演算法實現1(matlab)
演算法偽 得到q表後,根據如下演算法選擇最優策略 以機械人走房間為例,實現如下 注 原文中的房間狀態0 5分別對應 中1 6 機械人走房間q learning的實現 基本引數 episode 100 探索的迭代次數 alpha 1 更新步長 gamma 0.8 折扣因子 state num 6 ac...
RVM演算法的matlab實現
這裡用matlab實現了簡單的rvm演算法,具體演算法詳見prml 7.2節。如下 close all clear all clc parameters n 200 訓練集樣本數 nts 1000 測試集 集樣本數 data generation and display x,t datagen n ...