matlab練習程序(二維直方圖)


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

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

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

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

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

matlab代碼如下:

clear all;
close all;
clc;

img=imread('lena.jpg');
[m n]=size(img);
r=1;    %鄰域半徑

imgn=zeros(m+2*r+1,n+2*r+1);
imgn(r+1:m+r,r+1:n+r)=img;

imgn(1:r,r+1:n+r)=img(1:r,1:n);                 %擴展上邊界
imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r);    %擴展右邊界
imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1);    %擴展下邊界
imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r);       %擴展左邊界

Hist=zeros(256,256);
for i=1+r:r+m
    for j=1+r:r+n
        pix1=uint8(imgn(i,j));
        pix2=uint8(mean2(imgn(i-r:i+r,j-r:j+r)));
        Hist(pix1+1,pix2+1)=Hist(pix1+1,pix2+1)+1;           
    end
end
mesh(double(Hist))

 


免責聲明!

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



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