MATLAB 直方圖,線性變換,直方圖均衡化

1.給定圖像輸出直方圖

img = imread('E:\matlab\work\1.jpg');     p=rgb2gray(img);    %轉爲灰度圖像 imhist(p);

效果:



2.給定一個線性變換函數,實現圖像的灰度拉伸

  I = imread('E:\matlab\work\lenna.bmp') I2=I.*2-50  %做線性變換  imshow(I2); %顯示經過線性變換後的圖像 


3.實現對圖像的均衡化

I = imread('E:\matlab\work\lenna.bmp');   [height,width] = size(I);   figure   subplot(221)   imshow(I)%顯示原始圖像   subplot(222)   imhist(I)%顯示原始圖像直方圖      %進行像素灰度統計;   s = zeros(1,256);%統計各灰度數目,共256個灰度級   for i = 1:height       for j = 1: width           s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%對應灰度值像素點數量增加一       end   end   %計算灰度分佈密度   p = zeros(1,256);   for i = 1:256       p(i) = s(i) / (height * width * 1.0);   end   %計算累計直方圖分佈   c = zeros(1,256);   c(1) = p(1); for i = 2:256            c(i) = c(i - 1) + p(i);   end   %累計分佈取整,將其數值歸一化爲1~256  c = uint8(255 .* c + 0.5);   %對圖像進行均衡化 for i = 1:height       for j = 1: width           I(i,j) = c(I(i,j)+1);       end   end   subplot(223)   imshow(I)%顯示均衡化後的圖像 subplot(224)   imhist(I)%顯顯示均衡化後的圖像的直方圖  

或者可以直接用matlab的函數 histeq(I,256)


效果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章