當前位置:首頁 » 操作系統 » otsu演算法

otsu演算法

發布時間: 2022-01-10 15:34:17

1. 【高分】用Matlab實現中值濾波與Otsu演算法

告訴你一個簡單的方法
你可以edit
medfilt2
edit
graythresh
就可以得到原函數的詳細編碼,然後再稍微修改一下就行了唄

2. otsu演算法的matlab程序,哪位能幫我注釋一下,前面的我自己注釋的,後面的有點看不懂。謝謝!

程序思路有點亂.。寫成下面這樣的,容易看! image_1=imread(

3. otsu閾值分割演算法是什麼

Otsu演算法:最大類間方差法(大津演算法),是一種確定閾值的演算法。

之所以稱為最大類間方差法是因為,用該閾值進行的圖像固定閾值二值化,類間方差最大,它是按圖像的灰度特性,將圖像分成背景和前景兩部分,使類間方差最大的分割意味著錯分概率最小。

演算法評價:

優點:演算法簡單,當目標與背景的面積相差不大時,能夠有效地對圖像進行分割。

缺點:當圖像中的目標與背景的面積相差很大時,表現為直方圖沒有明顯的雙峰,或者兩個峰的大小相差很大,分割效果不佳,或者目標與背景的灰度有較大的重疊時也不能准確的將目標與背景分開。

4. 求一個用otsu演算法的圖像分割matlab程序

image_1=imread('E:\ebook\lena.bmp'); %讀入圖片
image_1=rgb2gray(image_1);%灰度化

[m,n]=size(image_1);%計算圖片的像素點個數,行列,n是列數,Gray

num=zeros(1,256);%存放各灰度級出現的次數

p=zeros(1,256);%存放各灰度級的比率

image_1=double(image_1);%雙精度化

for i=1:m
for j=1:n
num(image_1(i,j)+1)=num(image_1(i,j)+1)+1;%統計各灰度級的像素點個數
end
end

for i=1:256
p(i)=num(i)/(m*n);%計算各灰度級出現的比率
end

for i=2:256
if p(i)~=0
st=i+1;%實現尋找出現比率不為0的最小灰度值
break
end
end

for i=256:-1:1
if p(i)~=0;
nd=i-1;%實現找出出現比率不為0的最大灰度值
break
end
end

%以下程序實現利用最小方差和法找出門閾值
w=inf; th=0;

for t=st:nd%最小非零比率灰度值到最大非零比率灰度值
qt1=0; qt2=0;%前景後景像素點比率
u1=0; u2=0;%前景後景均值
v1=0; v2=0;%
for i=1:t
qt1=qt1+p(i);
end
for i=1:t
u1=u1+i*p(i)/qt1;
end
for i=1:t
v1=v1+((i-u1)^2)*p(i)/qt1;
end

for i=t+1:256
qt2=qt2+p(i);
end
for i=t+1:256
u2=u2+i*p(i)/qt2;
end
for i=t+1:256
v2=v2+((i-u2)^2)*p(i)/qt2;
end
if qt1*v1+qt2*v2<w
th=t; w=qt1*v1+qt2*v2 ;
end
end

for i=1:m
for j=1:n
if (image_1(i,j)+1>th)
image_2(i,j)=255;
else
image_2(i,j)=0;
end
end
end
image_2=uint8(image_2);%讀入讀出變換
figure,imshow(image_2);%顯示二值化後的圖片

5. otsu法和threshold有什麼區別

盲猜是圖像二值化處理的問題。

首先說結論:otsu法和threshold並不是一類東西,沒法說有什麼區別。otsu法是得出threshold的一個演算法。


一個灰度圖像,每個像素的灰度值都是一個位元組,8位,也就是0~255。數越大顏色越淺,越小顏色越深,0是黑色,255是白色。

二值化圖像也就是只有黑和白兩種顏色,一般情況下0是黑,1是白。

將灰度圖進行二值化處理時也就需要一個閾值,也就是threshold。小於這個閾值的數為0,這個點為黑色;大於這個閾值的數為1,這個點為白色。


所以圖像二值化最根本的問題就在於怎麼去選擇這個閾值。

最簡單的辦法就是設定一個固定值,這是運算速度最快也是最弱智的方法。顯然這種方法對環境光的要求比較高,如果整體環境的明暗發生變化,那麼對設定的閾值也要重新整定。

所以需要找到一種能夠自動計算出閾值的演算法。這種演算法有很多,OTSU法是其中用的比較多的一個方法。

OTSU法,中文叫大津法,是由日本學者大津展之提出的,因此以他的名字命名。大津法的根本思想是,首先通過聚類的方法將圖像的灰度值分為前景和背景兩類,再窮舉所有像素點的灰度值,並計算出一個閾值使得類間方差最大,這樣這個閾值就是一個理想的二值化閾值。大津法能夠很好的適應圖像的明暗度和對比度的變化。

大津法的具體演算法可以參考這篇文章:網頁鏈接

6. 圖像分割中的otsu演算法 有原理介紹么我在網上搜的論文都是改進啊或者研究什麼的 沒有最基礎的演算法介紹

這個演算法很簡單,是個日本人70年代寫的論文,你看看能不能搜到。具體的就是遍歷灰度0-255,選擇一個灰度值,使他們的類間距最大,圖像中摻著一些模式識別的概念,我想看看ostu的公式就能懂了吧,沒有這么復雜。

7. 最佳閥值分割 編程實現otsu最佳全局閥值演算法

a=imread('YuChu.bmp');
如果讀入的是彩色圖,需要用a=rgb2gray(a);轉換為灰度圖
加了這句我運行了下,程序沒出現錯誤也能出圖

另外matlab圖像處理工具箱中用level = graythresh(I)函數去閾值,其方法與你的方法一致,都是Otsu方法

補充:
你看看a讀入時數據的大小,要是3維的話就是RGB圖像了,需要轉一下
另外是程序錯誤還是結果不對?

8. Otsu演算法在Canny運算元中的應用中,Otsu演算法的程序後,要不要再添加在Canny運算元的程序

問題一:
OTSU法是二值化圖像的演算法,經過OTSU處理圖像就成了黑白二值圖。
CANNY演算法是針對灰度圖的邊緣提取演算法。OTSU處理後,不需要再加CANNY處理了。

問題二:
如果圖像噪音較大,就需要先做中值濾波,或其它降噪處理。這是圖像處理的前處理。做前處理的目的是提高圖像質量,然後再做OTSU,效果會好一些。但圖像本身就很清晰的話,就不需要加中值濾波了。

通過你的問題,我感覺你還沒有透徹理解幾個術語的概念。
先想清楚想把什麼樣的圖像處理成什麼樣的圖像,然後根據目的選擇處理方法。

如果話說重了,請原諒。

9. otsu演算法有多個k值對應的類間方差相等且最大

k的0~255循環求得每一個對應的fc=w0*(u0-ut).^2+w1*(u1-ut).^2;然後比較這256個fc中的最大值,對應的那個k就是ostu的閾值。所以你這個還差一個k的循環,並在循環裡面求最大fc。
我這也有段求閾值的,你可以參考下

hist=zeros(256,1);%直方圖
%threshold=128; %初始閾值
%計算直方圖
for i=1:height
for j=1:width
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(height*width);%落在每一灰度級上的概率
avg=0;
for m=1:256
avg=avg+(m-1)*hist(m);
end
temp=0;
for i=1:256
p1=0;
avg1=0;
avg2=0;
T_current=i-1;%當前分割閾值
for m=1:T_current-1
p1=hist(m)+ p1;%低灰度級概率總和
end
p2=1-p1;%高灰度級概率總和
for m=1:256
if m<T_current
avg1=avg1+(m-1)*hist(m);
else
avg2=avg2+(m-1)*hist(m);
end
end
avg1=avg1/p1;
avg2=avg2/p2;

D=p1*(avg1-avg)^2+p2*(avg2-avg)^2;
if D>=temp
finalT=T_current;
temp=D;
end
end
另外,站長團上有產品團購,便宜有保證

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:56
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:733
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:831
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:711
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:279
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:661
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:420
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:821