當前位置:首頁 » 操作系統 » 二值式演算法

二值式演算法

發布時間: 2023-10-05 00:40:24

Ⅰ 二進制的演算法 多舉個例子。

1、加法法則: 0+0=0,0+1=1+0=1,1+1=10

2、減法法則: 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 有借位,借1當(10)2 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。減法,當需要向上一位借數時,必須把上一位的1看成下一位的(2)10。

3、乘法法則: 0×0=0,0×1=1×0=0,1×1=1

4、除法法則: 0÷1=0,1÷1=1 除法應注意: 0÷0 = 0 0÷1 = 0 1÷0 = 0 (無意義)

(1)二值式演算法擴展閱讀

二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。

Ⅱ 二進制計算方法是什麼

加法:
(1)首先是最右數碼位相加。這里加數和被加數的最後一位分別為「0」和「1」,根據加法原則可以知道,相加後為「1」。

(2)再進行倒數第二位相加。這里加數和被加數的倒數第二位都為「1」,根據加法原則可以知道,相加後為「(10)2」,此時把後面的「0」留下,而把第一位的「1」向高一位進「1」。
(3)再進行倒數第三位相加。這里加數和被加數的倒數第二位都為「0」,根據加法原則可以知道,本來結果應為「0」,但倒數第二位已向這位進「1」了,相當於要加「被加數」、「加數」和「進位」這三個數的這個數碼位,所以結果應為0 1=1。
(4)最後最高位相加。這里加數和被加數的最高位都為「1」,根據加法原則可以知道,相加後為「(10)2」。一位只能有一個數字,所以需要再向前進「1」,本身位留下「0」,這樣該位相加後就得到「0」,而新的最高位為「1。
減法:
(1)首先最後一位向倒數第二位借「1」,相當於得到了(10)2,也就是相當於十進制數中的2,用2減去1得1。
(2)再計算倒數第二位,因為該位同樣為「0」,不及減數「1」大,需要繼續向倒數第三位借「1」(同樣是借「1」當「2」),但因為它在上一步中已借給了最後一位「1」(此時是真實的「1」),則倒數第二位為1,與減數「1」相減後得到「0」。
(3)用同樣的方法倒數第三位要向它們的上一位借「1」(同樣是當「2」),但同樣已向它的下一位(倒數第二位)借給「1」(此時也是真實的「1」),所以最終得值也為「0」。
(4)被減數的倒數第四位盡管與前面的幾位一樣,也為「0」,但它所對應的減數倒數第四位卻為「0」,而不是前面幾位中對應的「1」,它向它的高位(倒數第五位)借「1」(相當於「2」)後,在借給了倒數第四位「1」(真實的「1」)後,仍有「1」余,1 –0=1,所以該位結果為「1」。
(5)被減數的倒數第五位原來為「1」,但它借給了倒數第四位,所以最後為「0」,而此時減數的倒數第五位卻為「1」,這樣被減數需要繼續向它的高位(倒數第六位)借「1」(相當於「2」),2–1=1。
(6)被減數的最後一位本來為「1」,可是借給倒數第五位後就為「0」了,而減數沒有這個位,這樣結果也就是被減數的相應位值大小,此處為「0」。
在二進制數的加、減法運算中一定要聯繫上十進制數的加、減法運算方法,其實它們的道理是一樣的,也是一一對應的。在十進制數的加法中,進「1」仍就當「1」,在二進制數中也是進「1」當「1」。在十進制數減法中我們向高位借「1」當「10」,在二進制數中就是借「1」當「2」。而被借的數仍然只是減少了「1」,這與十進制數一樣。
乘法:
把二進制數中的「0」和「1」全部當成是十進制數中的「0」和「1」即可。根據十進制數中的乘法運算知道,任何數與「0」相乘所得的積均為「0」,這一點同樣適用於二進制數的乘法運算。只有「1」與「1」相乘才等於「1」。乘法運算步驟:
(1)首先是乘數的最低位與被乘數的所有位相乘,因為乘數的最低位為「0」,根據以上原則可以得出,它與被乘數(1110)2的所有位相乘後的結果都為「0」。
(2)再是乘數的倒數第二位與被乘數的所有位相乘,因為乘數的這一位為「1」,根據以上原則可以得出,它與被乘數(1110)2的高三位相乘後的結果都為「1」,而於最低位相乘後的結果為「0」。
(3)再是乘數的倒數第三位與被乘數的所有位相乘,同樣因為乘數的這一位為「1」,處理方法與結果都與上一步的倒數第二位一樣,不再贅述。
(4)最後是乘數的最高位與被乘數的所有位相乘,因為乘數的這一位為「0」,所以與被乘數(1110)2的所有位相乘後的結果都為「0」。
(5)然後再按照前面介紹的二進制數加法原則對以上四步所得的結果按位相加(與十進制數的乘法運算方法一樣),結果得到(1110)2×(0110)2=(1010100)2。
除法:
(1)首先用「1」作為商試一下,相當於用「1」乘以除數「110」,然後把所得到的各位再與被除數的前4位「1001」相減。按照減法運算規則可以得到的余數為「011」。
(2)因為「011」與除數「110」相比,不足以被除,所以需要向低取一位,最終得到「0111」,此時的數就比除數「110」大了,可以繼續除了。同樣用「1」作為商去除,相當於用「1」去乘除數「110」,然後把所得的積與被除數中當前四位「0111」相減。根據以上介紹的減法運算規則可以得到此步的余數為「1」。
(3)因為「1」要遠比除數「110」小,被除數向前取一位後為「11」,仍不夠「110」除,所以此時需在商位置上用「0」作為商了。
(4)然後在被除數上繼續向前取一位,得到「110」。此時恰好與除數「110」完全一樣,結果當然是用「1」作為商,用它乘以除數「110」後再與被除數相減,得到的余數正好為「0」。證明這兩個數能夠整除。
這樣一來,所得的商(1101)2就是兩者相除的結果。

Ⅲ 幾種二值化方法c++實現

掃描線劃圖圖像二值化方法可以分為全局方法和局部方法:
全局方法根據線劃圖像的灰度直方圖和灰度空間分布確定一個閾值,由此實現灰度圖像N--值圖像的轉變,比較有代表性的全局演算法包括平均灰度法,Otsu方法,迭代最優演算法等。
局部方法是通過檢查每個像素點的鄰域來確定局部閾值,它比全局閾值有著更廣泛的應用,典型的局部閾值方法有Niblack方法,Bemsen方法,平均梯度法等。

全局閾值法期望灰度值法:設圖像的尺寸為M*N,其灰度取值為厶,厶,厶…..k,用隨機變數X來表示每個像素點的灰度值。可以用概率分布來描述圖像的灰度分布情況,分別設各灰度級出現的概率為式2.1:^,A=p(厶)(2.1),仍=p(厶),...,PN=p(「)且有∑見=1灰度圖像的一個重要的統計量就是灰度期望值,使用它為閾值可以使黑色像素和白色像素的灰度值均等,公式(2.2)即為灰度期望值的計算式:鰳刪=∑厶見n-tⅣ(2.2)該演算法對於簡單圖像的效果好,而且計算復雜度較低,缺點是對於亮度不均勻的線劃圖像效果較差。
Otsu方法:這種方法又被稱為最大類間方差方法,是一種自適應的閾值確定方法。它根據灰度特性,將圖像分為目標和背景兩個部分,目標和背景的方差越大,說明這兩個部分的差別越大,因此類間最大方差的分割意味著錯分概率最小。對於灰度圖像I(x,y),目標和背景的分割閾值為T,屬於目標的像素點數占整個圖像像素點的比例是‰,其平均灰度值為Po;背景像素點數占整個圖像像素點的比例為q,其平均灰度值為「,圖像總平均灰度值記為盧,類間方差為g。假設圖像M*N的背景比較暗,圖像中像素灰度值小於閾值T的像素個數記為%,7第二章細化之前的預處理分析像素灰度值大於閾值T的像素個數記為Ⅳl,所以有式2.3到式2.8成立:嘞=j麗No(2.3)q:熹戧=———L—MxN』(2.4)。IZ.4l、Ⅳo+M=MxN‰+q=1‖=‰肛o+qH(2.5)(2.6)(2.7)(2.8)g=‰(po—JLl)2+q(「一‖)對於灰度圖像來說,分別以每個灰度為閾值計算對應的類間方差,其中使類間方差最大化的灰度值即為閾值。該演算法對於較簡單的線劃圖像有良好的效果而且有較快的運算速度,所以這種演算法的應用非常廣泛。
最優閾值法:又被稱為逼近迭代演算法,這種方法的原理是將直方圖用兩個或多個正態分布的概率密度函數來近似表示的方法,閾值取為對應兩個或多個正態分布的最大值之間的最小概率處的灰度值,其結果是具有最小誤差的分割。這里的誤差包括兩部分:將目標誤認為背景而被剔除或將背景、雜訊歸為目標。最優閾值法的處理步驟:El:計算圖像的最小灰度值k和最大灰度值Z二,令閾值初值為式2.9:To=(Zmi。+Z懈)/2(2.9)E2:根據閾值將圖像分為目標和背景兩部分,求出兩部分的平均灰度值Zo和五,分別計算Z0和Zl的平均值,用公式2.10來表示:∑I(i,/)10,J璉TkZo=互=等‰∑I(i,/)T)01.2(1群砸,/)>『、。一E3:計算新閾值,用式2.1l表示:T「1=(Zo+z1)/2(2.11)如果T『=T「1或者達到設定的最大迭代次數就結束,否則轉向步驟E2。該演算法能較好區分圖像的目標和背景,但是會導致圖像細微信息的丟失。

局部閾值法Niblack方法:基於局部均值和局部標准差,基本公式:T(x,y)=m(x,y)+七』s化少).(2.12)長安大學碩士論文對於圖像I(x,y),在(X,y)處的閾值r(x,Y)由局部均值m(x,Y)和局部標准差s(x,Y)決定,k表示調整系數,一般設為.0.2。在Niblack方法中,窗口大小的選擇非常重要,既要小到能保持足夠的局部細節又要大到能抑制雜訊。Niblack方法能很好地保持圖像細節,對於清晰的線劃圖像能夠提供很好的二值化結果,但是在一些模糊的線劃圖像中會保留一些不必要的細節。在最初的Niblack方法中,k值是固定的,但是對於不同的圖像,通常需要根據圖像的灰度分布情況自動調整k的值才能取得較好的結果,因此後來提出很多改進的演算法,其中一個改進的Niblack方法的基本公式為式2.13-T(x,J,):m(x,y)【l+k(1一掣掣)】瓜(2.13)k和R都是經驗常量,改進的Niblack方法使用k和R來減少對雜訊的敏感度。

Ⅳ 關於Niblack二值化演算法matlab代碼

for
i=1:r:Height
for
j=1:r:Width
block
=
imag(i:i+r-1,j:j+r-1);
%提取方塊
m
=
mean2(block);
v
=
var(var(double(block)));
t
=
m
+
k
*
v;
block
=
double(block
>盯孫州
t);
%計算二值
imag(i:i+r-1,j:j+r-1)
=
block;
%放回方凱蔽凱歲塊
end
end

Ⅳ 幾種經典的二值化方法及其vb.net實現

圖像二值化的目的是最大限度的將圖象中感興趣的部分保留下來,在很多情況下,也是進行圖像分析、特徵提取與模式識別之前的必要的圖像預處理過程。這個看似簡單的問題,在過去的四十年裡受到國內外學者的廣泛關注,產生了數以百計的閾值選取方法,但如同其他圖像分割演算法一樣,沒有一個現有方法對各種各樣的圖像都能得到令人滿意的結果。
本文針對幾種經典而常用的二值發放進行了簡單的討論並給出了其vb.net 實現。

1、P-Tile法

Doyle於1962年提出的P-Tile (即P分位數法)可以說是最古老的一種閾值選取方法。該方法根據先驗概率來設定閾值,使得二值化後的目標或背景像素比例等於先驗概率,該方法簡單高效,但是對於先驗概率難於估計的圖像卻無能為力。

2、OTSU 演算法(大津法)

OSTU演算法可以說是自適應計算單閾值(用來轉換灰度圖像為二值圖像)的簡單高效方法。1978 OTSU年提出的最大類間方差法以其計算簡單、穩定有效,一直廣為使用。


3、迭代法(最佳閥值法)

(1). 求出圖象的最大灰度值和最小灰度值,分別記為Zl和Zk,令初始閾值為:

(2). 根據閾值TK將圖象分割為前景和背景,分別求出兩者的平均灰度值Z0和ZB:式中,Z(i,j)是圖像上(i,j)點的象素值,N(i,j)是(i,j)點的權值,一般取1。


(3). 若TK=TK+1,則所得即為閾值,否則轉2,迭代計算。

4、一維最大熵閾值法
它的思想是統計圖像中每一個灰度級出現的概率 ,計算該灰度級的熵 ,假設以灰度級T分割圖像,圖像中低於T灰度級的像素點構成目標物體(O),高於灰度級T的像素點構成背景(B),那麼各個灰度級在本區的分布概率為:

O區: i=1,2……,t

B區: i=t+1,t+2……L-1

上式中的 ,這樣對於數字圖像中的目標和背景區域的熵分別為:

對圖像中的每一個灰度級分別求取W=H0 +HB,選取使W最大的灰度級作為分割圖像的閾值,這就是一維最大熵閾值圖像分割法。

Ⅵ NI Vision:二值圖像連通域標記演算法

前面說到,要使用Labwindows + NI Vision(IMAQ Vision)這套商用開發框架來做數圖課設。很明顯,這套虛擬儀器開發平台由NI Instrument(美國國家儀器公司)開發的。大名鼎鼎的Labview軟體就是這個公司開發的。相比較而言,Labwindows使用ANSI C開發,但應用場景是差不多的。

在做課程作業的時候,遇到了一個很有趣的應用。輸入是米粒,比背景灰度要低,目的是輸出米粒的顆數、面積、周長和孔數,這是工業上的一個很常見的應用。具體處理過程是二值化後使用低通濾波,並計算各種性質。

界面設計如下,可以看到米粒的詳細情況。

讓我感興趣的,是通過怎樣的演算法能夠得到米粒的數量?之前曾經用過OpenCV中找最大外界矩形這個函數,但沒有具體了解演算法實現。直覺告訴我原理應該是相似的。

可以看到,每一個米粒之間都是不連通的。這里就就提出了一個概念。 連通區域(Connected Component) 是指圖像中相鄰並有相同像素值的圖像區域。 連通區域分析(Connected Component Analysis,Connected Component Labeling) 是指將圖像中的各個連通區域找出並標記。

二值圖像分析最重要的方法就是連通區域標記,它是所有二值圖像分析的基礎,它通過對二值圖像中白色像素(目標)的標記,讓每個單獨的連通區域形成一個被標識的塊,進一步的我們就可以獲取這些塊的輪廓、外接矩形、質心、不變矩等幾何參數。如果要得到米粒的數量,那麼通過連通區域分析(這里是二值圖像的連通區域分析),就可以得到標記的數量,從而得到米粒的數量。

下面這幅圖中,如果考慮4鄰接,則有3個連通區域,8鄰接則是2個。

從連通區域的定義可以知道,一個連通區域是由具有相同像素值的相鄰像素組成像素集合,因此,我們就可以通過這兩個條件在圖像中尋找連通區域,對於找到的每個連通區域,我們賦予其一個唯一的 標識(Label) ,以區別其他連通區域。

連通區域分析的基本演算法有兩種:1)Two-Pass兩便掃描法 2)Seed-Filling種子填充法 。

兩遍掃描法(Two-Pass),正如其名,指的就是通過掃描兩遍圖像,就可以將圖像中存在的所有連通區域找出並標記。

說了一堆數學語言,其實用圖很好理解

種子填充方法來源於計算機圖形學,常用於對某個圖形進行填充。它基於區域生長演算法。至於區域生長演算法是什麼,可以參照我的這篇 文章 。

同樣的,上動圖

NI Vision 中的運算元定義如下

OpenCV中也有相應的運算元

這里參照其他博客實現一下Two-Pass演算法,Seed-Filling演算法就偷懶不搞了。

Reference:
OpenCV實現圖像連通組件標記與分析
OpenCV-二值圖像連通域分析
數字圖像處理技術 ——鄧繼忠(我的任課老師)

熱點內容
騰訊地圖ftp 發布:2025-01-23 13:38:43 瀏覽:16
linuxif判斷文件存在 發布:2025-01-23 13:35:24 瀏覽:996
java一個位元組 發布:2025-01-23 13:33:57 瀏覽:484
c程序編譯過程 發布:2025-01-23 13:33:54 瀏覽:414
微信公眾平台php 發布:2025-01-23 13:31:45 瀏覽:657
最底層的編程 發布:2025-01-23 13:30:21 瀏覽:78
sqlserver鎖表解鎖 發布:2025-01-23 13:26:32 瀏覽:132
達內培訓深深圳Java機 發布:2025-01-23 13:16:13 瀏覽:192
各大編程軟體 發布:2025-01-23 13:10:14 瀏覽:35
安卓微信下載的壓縮文件在哪裡 發布:2025-01-23 12:44:56 瀏覽:17