當前位置:編程學習大全網 - 源碼下載 - 求算法,源代碼!!!用Matlab編壹個圖像的非均勻量化程序。

求算法,源代碼!!!用Matlab編壹個圖像的非均勻量化程序。

直方圖均衡化也是非線性量化的壹種吧,網上找到的,作者寫的非常詳細。

% 數字圖像處理程序作業

% 本程序能將JPG格式的彩色圖像文件灰度化並進行直方圖均衡

%

% 輸入文件:PicSample.jpg 待處理圖像

% 輸出文件:PicSampleGray.bmp 灰度化後圖像

% PicEqual.bmp 均衡化後圖像

%

% 輸出圖形窗口說明

% figure NO 1 待處理彩色圖像

% figure NO 2 灰度化後圖像

% figure NO 3 直方圖

% figure NO 4 均衡化後直方圖

% figure NO 5 灰度變化曲線

% figure NO 6 均衡化後圖像

% 1, 處理的圖片名字要為 PicSample.jpg

% 2, 程序每次運行時會先清空workspace

% 作者;archiless lorder

clear all

%壹,圖像的預處理,讀入彩色圖像將其灰度化

PS=imread('PicSample.jpg'); %讀入JPG彩色圖像文件

imshow(PS) %顯示出來 figure NO 1

title('輸入的彩色JPG圖像')

imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %將彩色圖片灰度化並保存

PS=rgb2gray(PS); %灰度化後的數據存入數組

figure,imshow(PS) %顯示灰度化後的圖像,也是均衡化前的樣品 figure NO 2

title('灰度化後的圖像')

%二,繪制直方圖

[m,n]=size(PS); %測量圖像尺寸參數

GP=zeros(1,256); %預創建存放灰度出現概率的向量

for k=0:255

GP(k+1)=length(find(PS==k))/(m*n); %計算每級灰度出現的概率,將其存入GP中相應位置

end

figure,bar(0:255,GP,'g') %繪制直方圖 figure NO 3

title('原圖像直方圖')

xlabel('灰度值')

ylabel('出現概率')

%三,直方圖均衡化

S1=zeros(1,256);

for i=1:256

for j=1:i

S1(i)=GP(j)+S1(i); %計算Sk

end

end

S2=round(S1*256); %將Sk歸到相近級的灰度

for i=1:256

GPeq(i)=sum(GP(find(S2==i))); %計算現有每個灰度級出現的概率

end

figure,bar(0:255,GPeq,'b') %顯示均衡化後的直方圖 figure NO 4

title('均衡化後的直方圖')

xlabel('灰度值')

ylabel('出現概率')

figure,plot(0:255,S2,'r') %顯示灰度變化曲線 figure NO 5

legend('灰度變化曲線')

xlabel('原圖像灰度級')

ylabel('均衡化後灰度級')

%四,圖像均衡化

PA=PS;

for i=0:255

PA(find(PS==i))=S2(i+1); %將各個像素歸壹化後的灰度值賦給這個像素

end

figure,imshow(PA) %顯示均衡化後的圖像 figure NO 6

title('均衡化後圖像')

imwrite(PA,'PicEqual.bmp');

  • 上一篇:為什麽給電影做電腦特技很貴?
  • 下一篇:macd和kdj組合戰法
  • copyright 2024編程學習大全網