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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最大熵阈值分割法

發布時間:2024/8/1 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最大熵阈值分割法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)什么是熵?

熵是用來衡量一個分布的均勻程度,熵越大,說明分布越均勻

在信息論中,信息熵可以說明消息的混沌程度,熵越大說明消息越不明了,難以從消息中得到有效信息。舉一個超級簡單的例子,假設一輛車開到了一個T字型的路口,限定它必須要么左轉,要么右轉,設左轉的概率是P1,右轉的概率是P2,除此之外沒有任何信息了,問如何估計P1和P2?你現在有的信息僅僅是P1+P2=1而已,按最大熵的思想,既然你沒有其他任何信息來說明向左轉的可能性比向右轉的可能性大(或小),那就應該把它們兩一視同仁,同等對待,不能偏袒其一,于是應該 P1=P2=1/2,這就是最大熵的思想。仔細想想還是挺有道理的,假設你覺得這樣不是最合適的解,你給出了另一個解P1=3/4,P2=1/4那就要問了,憑什么往左轉的概率比往右轉的大呢?已經沒有任何信息再支持你的判斷了呀。因此,只能把它們兩同等對待了。事實上,P1=P2=1/2這個分布的熵比這個P1=3/4,P2=1/4分布的熵要大,因為前者比后者均勻,越均勻熵越大,就越是同等對待(均勻的意思就是大家都一樣)。

(2)熵的定義

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ??

這里log的底數取多少并沒有規定

(3)最大熵閾值分割原理

利用圖像熵為準則進行圖像分割是由Kapuret提出來,是現在仍然使用較廣的一種圖像熵分割方法。原論文《A New Method forGray-Level Picture ThresholdingUsing the Entropy of the Histogram》,在百度學術上可以免費下載。

給定一個特定的閾值 q(0<=q<K-1),對于該閾值所分割的兩個圖像區域C0,C1,其估算的概率密度函數可表示為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

P0(q),P1(q)分別表示的是q閾值分割的背景和前景像素的累計概率,兩者之和為1。背景和前景對應的熵表示如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

在該閾值下,圖像總熵為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

計算所有分割閾值下的圖像總熵,找到最大的熵,將最大熵對應的分割閾值作為最終的閾值,圖像中灰度大于此閾值的像素作為前景,否則作為背景。

分割閾值的選取是困難的,我們在算法中選取了256個分割閾值,也就是256級灰度,從第1級灰度一直計算到第256級灰度,因此有256個圖像總熵,找到最大的總熵及其位置,例如是第50個,那么最終的分割閾值就是灰度=50。

MATLAB代碼如下:

clear Imag = imread('rice.png'); [X, Y] = size(Imag); figure (); imhist(Imag); % 計算圖像直方圖 hist = imhist(Imag); p = hist/(X*Y); % 各灰度概率sumP = cumsum(p); sumQ = 1-sumP;%將256個灰度作為256個分割閾值,分別計算各閾值下的概率密度函數 c0 = zeros(256,256); c1 = zeros(256,256); for i = 1:256for j = 1:iif sumP(i) > 0c0(i,j) = p(j)/sumP(i); %計算各個閾值下的前景概率密度函數elsec0(i,j) = 0;endfor k = i+1:256if sumQ(i) > 0;c1(i,k) = p(k)/sumQ(i); %計算各個閾值下的背景概率密度函數elsec1(i,k) = 0;endendend end%計算各個閾值下的前景和背景像素的累計熵 H0 = zeros(256,256); H1 = zeros(256,256); for i = 1:256for j = 1:iif c0(i,j) ~=0H0(i,j) = - c0(i,j).*log10(c0(i,j)); %計算各個閾值下的前景熵endfor k = i+1:256if c1(i,k) ~=0H1(i,k) = -c1(i,k).*log10(c1(i,k)); %計算各個閾值下的背景熵endendend end HH0 = sum(H0,2); HH1 = sum(H1,2); H = HH0 + HH1; [value, Threshold] = max(H);BW = im2bw(Imag, Threshold/255); figure (); imshow(BW); xlabel(['最大熵', num2str(Threshold)]);

?

總結

以上是生活随笔為你收集整理的最大熵阈值分割法的全部內容,希望文章能夠幫你解決所遇到的問題。

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