① 動態閾值一般有什麼演算法謝謝啦,沒錢。。。
%本程序是利用最大類間方差演算法求解自適應閾值,對圖像進行分割
clear;
warning off;
web -browser
SE = strel('diamond',4);
BW1 = imread('img1.bmp');
BW2 = imerode(BW1,SE);
BW3 = imdilate(BW2,SE);
BW4 = BW1-BW3;
%rgb轉灰度
if isrgb(BW4)==1
I_gray=rgb2gray(BW4);
else
I_gray=BW4;
end
figure,imshow(I_gray);
I_double=double(I_gray);%轉化為雙精度
[wid,len]=size(I_gray);
colorlevel=256; %灰度級
hist=zeros(colorlevel,1);%直方圖
%threshold=128; %初始閾值
%計算直方圖
for i=1:wid
for j=1:len
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(wid*len);%直方圖歸一化
miuT=0;
for m=1:colorlevel
miuT=miuT+(m-1)*hist(m);
end
xigmaB2=0;
for mindex=1:colorlevel
threshold=mindex-1;
omega1=0;
omega2=0;
for m=1:threshold-1
omega1=omega1+hist(m);
end
omega2=1-omega1;
miu1=0;
miu2=0;
for m=1:colorlevel
if m<threshold
miu1=miu1+(m-1)*hist(m);
else
miu2=miu2+(m-1)*hist(m);
end
end
miu1=miu1/omega1;
miu2=miu2/omega2;
xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;
xigma(mindex)=xigmaB21;
if xigmaB21>xigmaB2
finalT=threshold;
xigmaB2=xigmaB21;
end
end
fT=finalT/255 %閾值歸一化
T=graythresh(I_gray)%matlab函數求閾值
for i=1:wid
for j=1:len
if I_double(i,j)>finalT
bin(i,j)=1;
else
bin(i,j)=0;
end
end
end
figure,imshow(bin);
figure,plot(1:colorlevel,xigma);
已發送,請查收,發送郵箱[email protected] ,你的郵箱名是錯的,彈回來了。反正這里也有,不發了。
② Heursure閾值演算法是什麼
rigrsure閾值,是一種基於Stein的無偏似然估計原理的自適應閾值選擇;
sqtwolog閾值,採用的是一種固定的閾值形式,它所產生的閾值為2log(length(x))
heursure閾值,是前兩種閾值法的綜合,所選擇的是最優預測變數閾值,當信噪比很小,閾值估計有很大雜訊時就需要採用這種固定的閾值形式
剛在寫論文,隨手粘貼過來。
③ 求幫翻譯一下..在線等..
該LEVL命令集,或者讀取,用於信道i的觸發閾值。如果SR620是在autolevel模式下,該命令將關閉autolevel模式,並設置所需的閾值。觸發電平由LEVL命令設置將一直有效,直至前面板旋鈕旋轉
④ 簡單閾值法和Otsu演算法的根本區別是什麼
區別如下:
Niblack演算法是通過某一像素點及其鄰域內像素點灰度值的均值和標准差計算得到二值化閾值的。在計算圖像點(x,y)二值化閾值時,首先計算以(x,y)為中心的n*n大小的區域內像素點的灰度均值m和標准差s。灰度均值m和標准差s的計算公式如下:
然後根據灰度均值和標准差計算得到點(x,y)的二值化閾值T,計算公式為T(x,y)=k*s(x,y)+m(x,y),其中k為修正系數。最後根據計算得到的閾值T對該點進行二值化處理。將圖像中所有的像素點按照此方法處理即可得到二值化圖像。
雖然能夠實現圖像的二值化,但是如果選取的區域均為背景點時,該演算法會將灰度值較高的點當做是目標點,導致偽雜訊的引入(針對偽雜訊引入的問題,產生了Sauvola演算法)。此處說明一下Sauvola演算法。Sauvola演算法可以說是一種改進的Niblack演算法。首先也是按照上文所述方式求取灰度均值和標准差,但是採用了不同的閾值選取方法。