MATLAB 二維直方圖


普通的直方圖就是統計圖像中像素灰度出現的次數。

二維直方圖的其中一維就是普通的直方圖,即統計圖像中像素灰度出現的次數。

另一維的概念就比較模糊了,我看很多論文中都是用的當前像素鄰域均值灰度出現的次數。按照這個意思,其實用當前像素鄰域中值灰度出現的次數也是可以的。或者用什么厲害的算法處理一下,在統計出現灰度的次數也是可以的。所以按照這樣推廣,其實構成N維直方圖也是未嘗不可的。

至於有什么用處嘛,我還需要再研究研究。

lena的二維直方圖,1維是普通直方圖,2維是半徑為1的鄰域均值直方圖:

matlab代碼如下:

 1 clear all;  2 close all;  3 clc;  4 
 5 img=imread('lena.jpg');  6 [m n]=size(img);  7 r=1;    %鄰域半徑  8 
 9 imgn=zeros(m+2*r+1,n+2*r+1); 10 imgn(r+1:m+r,r+1:n+r)=img; 11 
12 imgn(1:r,r+1:n+r)=img(1:r,1:n);                 %擴展上邊界 13 imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r);    %擴展右邊界 14 imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1);    %擴展下邊界 15 imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r);       %擴展左邊界 16 
17 Hist=zeros(256,256); 18 for i=1+r:r+m 19     for j=1+r:r+n 20         pix1=uint8(imgn(i,j)); 21         pix2=uint8(mean2(imgn(i-r:i+r,j-r:j+r))); 22         Hist(pix1+1,pix2+1)=Hist(pix1+1,pix2+1)+1; 23  end 24 end 25 mesh(double(Hist))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM