日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Matlab实现直方图均衡化(基于自定义函数)

發布時間:2023/11/27 生活经验 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab实现直方图均衡化(基于自定义函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Matlalb實現直方圖均衡化

  • 直方圖均衡化
  • Matlab代碼實現

直方圖均衡化

直方圖均衡化是一種使輸出圖像直方圖近似服從均勻分布的變換算法,其計算步驟如下:

  1. 列出原始圖像的灰度級fjf_jfj?,j=0,1,…,k,…,L-1,其中L是灰度級的個數。
  2. 統計各灰度值的像素數目NjN_jNj?, j=0,1,…,k,…,L-1。
  3. 計算原始圖像直方圖各灰度級的頻度Pj=Njn\frac{Nj}{n}nNj?,j=0,1,2,…,k,…,L-1,其中n為原始圖像總的像素數目。
  4. 計算累計分布函數C(f)=∑i=0kPj(fj)\displaystyle\sum_{i=0}^{k} P_j(f_j)i=0k?Pj?(fj?),j=0,1,2,…,k,…,L-1。
  5. 應用以下公式計算映射后的輸出圖像的灰度級gig_igi?,i=0,1,…,k,…,P-1,P為輸出圖像灰度級的個數:
    gig_igi?=INT[ (gmaxg_{max}gmax?-gming_{min}gmin?)C(f)+gming_{min}gmin?+0.5 ]
    式中,INT為取整符號。
  6. 統計映射后各灰度級的像素數目nin_ini?,i=0,1,…,k,…,P-1。
  7. 計算輸出圖像直方圖PgP_gPg?(gig_igi?)=nin\frac{n_i}{n}nni??,i=0,1,…,k,…,P-1。
  8. fjf_jfj?gig_igi?的映射關系修改原始灰度級,從而獲得直方圖近似為均勻分布的輸出圖像。

Matlab代碼實現

Histogram_equalization.m

function [output] = Histogram_equalization(input_image)
if numel(size(input_image)) == 3   %如果圖像為rgb圖像%this is a RGB image%here is just one method, if you have other ways to do the%equalization, you can change the following coder=input_image(:,:,1);v=input_image(:,:,2);b=input_image(:,:,3);r1 = hist_equal(r);v1 = hist_equal(v);b1 = hist_equal(b);output = cat(3,r1,v1,b1);    
else                              %圖像為灰值圖像[output] = hist_equal(input_image);  
endfunction [output2] = hist_equal(input_channel)[m,n]=size(input_channel);output2=zeros(m,n);N=zeros(256,1);P=zeros(256,1);C=zeros(256,1);for i=1:m                    %統計各灰度級個數for j=1:nN(input_channel(i,j)+1)=N(input_channel(i,j)+1)+1;endendfor i=1:256                 %計算原始圖像直方圖各灰度級的頻度P(i)=N(i)/(m*n);endC(1)=P(1);                  %計算累計分布函數for i=2:256C(i)=C(i-1)+P(i);endfor i=1:m                   %通過映射關系獲得輸出直方圖for j=1:noutput2(i,j)=floor(255*C(input_channel(i,j)+1)+0.5);endendoutput2=uint8(output2);end
end 

代碼效果展示


展示代碼 test.m

clc;
clear;
close all;
I = imread('d:\test.jpg');
[J] = Histogram_equalization(I);
subplot(221), imshow(I);
subplot(222), imhist(I);
subplot(223), imshow(J);
subplot(224), imhist(J);

[1] MATLAB數字圖像處理.張德豐.掃描版

總結

以上是生活随笔為你收集整理的Matlab实现直方图均衡化(基于自定义函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。