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)
效果: