導航:首頁 > 源碼編譯 > color演算法

color演算法

發布時間:2023-10-05 08:53:37

A. 在java中,如何判斷兩個顏色是否相同

可以用掃描線種子演算法
掃描線種子填充演算法的基本過程如下:當給定種子點(x,
y)時,首先分別向左和向右兩個方向填充種子點所在掃描線上的位於給定區域的一個區段,同時記下這個區段的范圍[xleft,
xright],然後確定與這一區段相連通的上、下兩條掃描線上位於給定區域內的區段,並依次保存下來。反復這個過程,直到填充結束。
掃描線種子填充演算法可由下列四個步驟實現:
(1)
初始化一個空的棧用於存放種子點,將種子點(x,
y)入棧;
(2)
判斷棧是否為空,如果棧為空則結束演算法,否則取出棧頂元素作為當前掃描線的種子點(x,
y),y是當前的掃描線;
(3)
從種子點(x,
y)出發,沿當前掃描線向左、右兩個方向填充,直到邊界。分別標記區段的左、右端點坐標為xleft和xright;
(4)
分別檢查與當前掃描線相鄰的y
-
1和y
+
1兩條掃描線在區間[xleft,
xright]中的像素,從xleft開始向xright方向搜索,若存在非邊界且未填充的像素點,則找出這些相鄰的像素點中最右邊的一個,並將其作為種子點壓入棧中,然後返回第(2)步;

B. 圖像的特徵提取都有哪些演算法

常用的圖像特徵有顏色特徵、紋理特徵、形狀特徵、空間關系特徵。

一 顏色特徵

(一)特點:顏色特徵是一種全局特徵,描述了圖像或圖像區域所對應的景物的表面性質。一般顏色特徵是基於像素點的特徵,此時所有屬於圖像或圖像區域的像素都有各自的貢獻。由於顏色對圖像或圖像區域的方向、大小等變化不敏感,所以顏色特徵不能很好地捕捉圖像中對象的局部特徵。另外,僅使用顏色特徵查詢時,如果資料庫很大,常會將許多不需要的圖像也檢索出來。顏色直方圖是最常用的表達顏色特徵的方法,其優點是不受圖像旋轉和平移變化的影響,進一步藉助歸一化還可不受圖像尺度變化的影響,基缺點是沒有表達出顏色空間分布的信息。

(二)常用的特徵提取與匹配方法

(1) 顏色直方圖

其優點在於:它能簡單描述一幅圖像中顏色的全局分布,即不同色彩在整幅圖像中所佔的比例,特別適用於描述那些難以自動分割的圖像和不需要考慮物體空間位置的圖像。其缺點在於:它無法描述圖像中顏色的局部分布及每種色彩所處的空間位置,即無法描述圖像中的某一具體的對象或物體。

最常用的顏色空間:RGB顏色空間、HSV顏色空間。

顏色直方圖特徵匹配方法:直方圖相交法、距離法、中心距法、參考顏色表法、累加顏色直方圖法。

(2) 顏色集

顏色直方圖法是一種全局顏色特徵提取與匹配方法,無法區分局部顏色信息。顏色集是對顏色直方圖的一種近似首先將圖像從 RGB顏色空間轉化成視覺均衡的顏色空間(如 HSV 空間),並將顏色空間量化成若干個柄。然後,用色彩自動分割技術將圖像分為若干區域,每個區域用量化顏色空間的某個顏色分量來索引,從而將圖像表達為一個二進制的顏色索引集。在圖像匹配中,比較不同圖像顏色集之間的距離和色彩區域的空間關系

(3) 顏色矩

這種方法的數學基礎在於:圖像中任何的顏色分布均可以用它的矩來表示。此外,由於顏色分布信息主要集中在低階矩中,因此,僅採用顏色的一階矩(mean)、二階矩(variance)和三階矩(skewness)就足以表達圖像的顏色分布。

(4) 顏色聚合向量

其核心思想是:將屬於直方圖每一個柄的像素分成兩部分,如果該柄內的某些像素所佔據的連續區域的面積大於給定的閾值,則該區域內的像素作為聚合像素,否則作為非聚合像素。

(5) 顏色相關圖

二 紋理特徵

(一)特點:紋理特徵也是一種全局特徵,它也描述了圖像或圖像區域所對應景物的表面性質。但由於紋理只是一種物體表面的特性,並不能完全反映出物體的本質屬性,所以僅僅利用紋理特徵是無法獲得高層次圖像內容的。與顏色特徵不同,紋理特徵不是基於像素點的特徵,它需要在包含多個像素點的區域中進行統計計算。在模式匹配中,這種區域性的特徵具有較大的優越性,不會由於局部的偏差而無法匹配成功。作為一種統計特徵,紋理特徵常具有旋轉不變性,並且對於雜訊有較強的抵抗能力。但是,紋理特徵也有其缺點,一個很明顯的缺點是當圖像的解析度變化的時候,所計算出來的紋理可能會有較大偏差。另外,由於有可能受到光照、反射情況的影響,從2-D圖像中反映出來的紋理不一定是3-D物體表面真實的紋理。

例如,水中的倒影,光滑的金屬面互相反射造成的影響等都會導致紋理的變化。由於這些不是物體本身的特性,因而將紋理信息應用於檢索時,有時這些虛假的紋理會對檢索造成「誤導」。

在檢索具有粗細、疏密等方面較大差別的紋理圖像時,利用紋理特徵是一種有效的方法。但當紋理之間的粗細、疏密等易於分辨的信息之間相差不大的時候,通常的紋理特徵很難准確地反映出人的視覺感覺不同的紋理之間的差別。

(二)常用的特徵提取與匹配方法

紋理特徵描述方法分類

(1)統計方法統計方法的典型代表是一種稱為灰度共生矩陣的紋理特徵分析方法Gotlieb 和 Kreyszig 等人在研究共生矩陣中各種統計特徵基礎上,通過實驗,得出灰度共生矩陣的四個關鍵特徵:能量、慣量、熵和相關性。統計方法中另一種典型方法,則是從圖像的自相關函數(即圖像的能量譜函數)提取紋理特徵,即通過對圖像的能量譜函數的計算,提取紋理的粗細度及方向性等特徵參數

(2)幾何法

所謂幾何法,是建立在紋理基元(基本的紋理元素)理論基礎上的一種紋理特徵分析方法。紋理基元理論認為,復雜的紋理可以由若干簡單的紋理基元以一定的有規律的形式重復排列構成。在幾何法中,比較有影響的演算法有兩種:Voronio 棋盤格特徵法和結構法。

(3)模型法

模型法以圖像的構造模型為基礎,採用模型的參數作為紋理特徵。典型的方法是隨機場模型法,如馬爾可夫(Markov)隨機場(MRF)模型法和 Gibbs 隨機場模型法

(4)信號處理法

紋理特徵的提取與匹配主要有:灰度共生矩陣、Tamura 紋理特徵、自回歸紋理模型、小波變換等。

灰度共生矩陣特徵提取與匹配主要依賴於能量、慣量、熵和相關性四個參數。Tamura 紋理特徵基於人類對紋理的視覺感知心理學研究,提出6種屬性,即:粗糙度、對比度、方向度、線像度、規整度和粗略度。自回歸紋理模型(simultaneous auto-regressive, SAR)是馬爾可夫隨機場(MRF)模型的一種應用實例。

三 形狀特徵

(一)特點:各種基於形狀特徵的檢索方法都可以比較有效地利用圖像中感興趣的目標來進行檢索,但它們也有一些共同的問題,包括:①目前基於形狀的檢索方法還缺乏比較完善的數學模型;②如果目標有變形時檢索結果往往不太可靠;③許多形狀特徵僅描述了目標局部的性質,要全面描述目標常對計算時間和存儲量有較高的要求;④許多形狀特徵所反映的目標形狀信息與人的直觀感覺不完全一致,或者說,特徵空間的相似性與人視覺系統感受到的相似性有差別。另外,從 2-D 圖像中表現的 3-D 物體實際上只是物體在空間某一平面的投影,從 2-D 圖像中反映出來的形狀常不是 3-D 物體真實的形狀,由於視點的變化,可能會產生各種失真。

(二)常用的特徵提取與匹配方法

Ⅰ幾種典型的形狀特徵描述方法

通常情況下,形狀特徵有兩類表示方法,一類是輪廓特徵,另一類是區域特徵。圖像的輪廓特徵主要針對物體的外邊界,而圖像的區域特徵則關繫到整個形狀區域。

幾種典型的形狀特徵描述方法:

(1)邊界特徵法該方法通過對邊界特徵的描述來獲取圖像的形狀參數。其中Hough 變換檢測平行直線方法和邊界方向直方圖方法是經典方法。Hough 變換是利用圖像全局特性而將邊緣像素連接起來組成區域封閉邊界的一種方法,其基本思想是點—線的對偶性;邊界方向直方圖法首先微分圖像求得圖像邊緣,然後,做出關於邊緣大小和方向的直方圖,通常的方法是構造圖像灰度梯度方向矩陣。

(2)傅里葉形狀描述符法

傅里葉形狀描述符(Fourier shape descriptors)基本思想是用物體邊界的傅里葉變換作為形狀描述,利用區域邊界的封閉性和周期性,將二維問題轉化為一維問題。

由邊界點導出三種形狀表達,分別是曲率函數、質心距離、復坐標函數。

(3)幾何參數法

形狀的表達和匹配採用更為簡單的區域特徵描述方法,例如採用有關形狀定量測度(如矩、面積、周長等)的形狀參數法(shape factor)。在 QBIC 系統中,便是利用圓度、偏心率、主軸方向和代數不變矩等幾何參數,進行基於形狀特徵的圖像檢索。

需要說明的是,形狀參數的提取,必須以圖像處理及圖像分割為前提,參數的准確性必然受到分割效果的影響,對分割效果很差的圖像,形狀參數甚至無法提取。

(4)形狀不變矩法

利用目標所佔區域的矩作為形狀描述參數。

(5)其它方法

近年來,在形狀的表示和匹配方面的工作還包括有限元法(Finite Element Method 或 FEM)、旋轉函數(Turning Function)和小波描述符(Wavelet Descriptor)等方法。

Ⅱ 基於小波和相對矩的形狀特徵提取與匹配

該方法先用小波變換模極大值得到多尺度邊緣圖像,然後計算每一尺度的 7個不變矩,再轉化為 10 個相對矩,將所有尺度上的相對矩作為圖像特徵向量,從而統一了區域和封閉、不封閉結構。

四 空間關系特徵

(一)特點:所謂空間關系,是指圖像中分割出來的多個目標之間的相互的空間位置或相對方向關系,這些關系也可分為連接/鄰接關系、交疊/重疊關系和包含/包容關系等。通常空間位置信息可以分為兩類:相對空間位置信息和絕對空間位置信息。前一種關系強調的是目標之間的相對情況,如上下左右關系等,後一種關系強調的是目標之間的距離大小以及方位。顯而易見,由絕對空間位置可推出相對空間位置,但表達相對空間位置信息常比較簡單。

空間關系特徵的使用可加強對圖像內容的描述區分能力,但空間關系特徵常對圖像或目標的旋轉、反轉、尺度變化等比較敏感。另外,實際應用中,僅僅利用空間信息往往是不夠的,不能有效准確地表達場景信息。為了檢索,除使用空間關系特徵外,還需要其它特徵來配合。

(二)常用的特徵提取與匹配方法
提取圖像空間關系特徵可以有兩種方法:一種方法是首先對圖像進行自動分割,劃分出圖像中所包含的對象或顏色區域,然後根據這些區域提取圖像特徵,並建立索引;另一種方法則簡單地將圖像均勻地劃分為若干規則子塊,然後對每個圖像子塊提取特徵,並建立索引。

C. 計算機圖形學, 光線跟蹤演算法的過程是什麼

光線跟蹤思路:從視點出發,通過圖像平面上每個像素中心向場景發出一條光線,光線的起點為視點,方向為像素中心和視點連線單位向量。光線與離視點最近的場景物體表面交點有三種可能:
當前交點所在的物體表面為理想漫射面,跟蹤結束。
當前交點所在的物體表面為理想鏡面,光線沿其鏡面發射方向繼續跟蹤。
當前交點所在的物體表面為規則透射面,光線沿其規則透射方向繼續跟蹤。

偽代碼:

void TraceRay(const Vec3& start, const Vec3& direction, int depth, Color& color)
{
Vec3 intersectionPoint, reflectedDirection, transmittedDirection;
Color localColor, reflectedColor, transmittedColor;
if (depth >= MAX_DEPTH) {
color = Black; //#000
}
else {
Ray ray(start, direction); //取start起點,方向direction為跟蹤射線;
if ( !scene->HasIntersection(ray) )
color = BackgroundColor;
else {
計算理起始點start最近的交點intersectionPoint,
記錄相交物體intersectionObject,

// #1
Shade(intersectionObject, intersectionPoint, localColor);

// #2
if ( intersectionPoint所在面為鏡面 ) {
計算跟蹤光想S在intersectionPoint處的反射光線方向reflectedDirection,
TraceRay(intersectionPoint, reflectedDirection, depth+1, reflectedColor);
}
// #3
if ( intersectionPoint所在的表面為透明面 ) {
計算跟蹤光線S在intersectionPoint處的規則透射光線方向transmittedDirection,
TraceRay(intersectionPoint, transmittedDirection, depth+1, transmittedColor);
}
// #summarize
color = localColor + Ks * reflectedColor + Kt * transmittedColor;
}// else
} //else
}
// 局部光照模型計算交點intersectionPoint處的局部光亮度localColor
void Shade(const Object& intersectionObj, const Vec3& intersectionPoint, Color& localColor)
{
確定intersectionObj在intersectionPoint處的單位法向量N,
漫反射系數Kd,
鏡面反射系數Ks,
環境反射系數Ka;
localColor = Ka * Ia; //Ia為環境光亮度
for ( 每一個點光源PointLight ) {
計算入射光線單位向量L和虛擬鏡面法向單位向量H,
// 由Phong模型計算光源PointLight在intersectionPoint處的漫反射和鏡面反射光亮度
localColor += ( Ipointlight * ( Kd * (N.dot(L)) + Ks * (N.dot(H))^n ) );
}
}

D. 計算2個顏色的相似度

請參考下面的演算法,類似於求方差

//調用示例MsgBox 顏色相似("fe3333","ff3333", 0.9)

Function 顏色相似(當前顏色, 對比顏色, 相似度)//相似度為0到1之間的數If 0<=相似度<=1 thenCall Plugin.Color.ColorToRGB(當前顏色, R1, G1, B1)Call Plugin.Color.ColorToRGB(對比顏色, R2, G2, B2)If abs(R1 - R2) < 255 * (1 - 相似度) and abs(G1 - G2) < 255 * (1 - 相似度) and abs(B1 - B2) < 255 * (1 - 相似度) Then 顏色相似 = "相似"Else 顏色相似 = "不相似"End IfElse 顏色相似 = "相似度出錯"End ifEnd Function

閱讀全文

與color演算法相關的資料

熱點內容
搶答器c程序編程 瀏覽:703
什麼app可以自己玩 瀏覽:76
刨客app是什麼 瀏覽:963
cad輸入命令欄不見了 瀏覽:834
做故事集可以用什麼app 瀏覽:692
qq郵箱發送壓縮包 瀏覽:672
程序員桌面機器人 瀏覽:589
xjr快速開發平台源碼 瀏覽:159
java介面runnable 瀏覽:31
python怎麼運行web伺服器 瀏覽:349
notepad編程代碼 瀏覽:740
什麼安卓的毛病最少 瀏覽:611
hp的pjl設備訪問命令 瀏覽:635
googlewebp圖片壓縮技術 瀏覽:215
tbc薩滿加血宏命令 瀏覽:757
pdf閃 瀏覽:289
手機伺服器地址填什麼 瀏覽:258
lrpython代碼 瀏覽:848
加密照片怎麼也找不到 瀏覽:796
卸載編譯安裝的java 瀏覽:299