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

細化演算法

發布時間: 2022-01-15 22:09:43

⑴ 基於輪廓的細化演算法

。。輪廓?計算機圖形學~~

我現在搞的項目就涉及輪廓查找

我用的是OpenCV,是一個開源的演算法,基於VC,裡面有大量的演算法,當然包括了
輪廓的查找演算法~~有好幾個

可以搜索OpenCV關鍵字~~

⑵ 誰有好的細化演算法為什麼OPENCV里沒有提供這個演算法

你可以看一下zhang-suen-thinning-algorithm.
到:
answers.opencv.org/question/3207/what-is-a-good-thinning-algorithm-for-getting-the-skeleton-of-characters-for-ocr/
找點啟發。

⑶ 這是zhang-suen快速並行骨架細化演算法matlab程序

你的文件不全,比如少了數據文件...
你可以先定義 mtimes=1 或者0 啊
這樣這個error沒了,但其他error估計會出來,一個一個解決掉吧

⑷ 誰有指紋圖像細化演算法的快速細化演算法的模擬程序呢

俺真的不知道,不好意思啊

⑸ 求 c# Hilditch細化演算法

/**//// <summary>
/// 該函數用於對圖像進行細化運算。要求目標圖像為灰度圖像
/// </summary>
/// <param name="dgGrayValue"></param>
public void ThiningPic(Bitmap bmpobj,int dgGrayValue)
{
int lWidth = bmpobj.Width;
int lHeight = bmpobj.Height;
// Bitmap newBmp = new Bitmap(lWidth, lHeight);

bool bModified; //臟標記
int i, j, n, m; //循環變數
Color pixel; //像素顏色值

//四個條件
bool bCondition1;
bool bCondition2;
bool bCondition3;
bool bCondition4;

int nCount; //計數器
int[,] neighbour = new int[5, 5]; //5×5相鄰區域像素值

bModified = true;
while (bModified)
{
bModified = false;

//由於使用5×5的結構元素,為防止越界,所以不處理外圍的幾行和幾列像素
for (j = 2; j < lHeight - 2; j++)
{
for (i = 2; i < lWidth - 2; i++)
{
bCondition1 = false;
bCondition2 = false;
bCondition3 = false;
bCondition4 = false;

if (bmpobj.GetPixel(i, j).R > dgGrayValue)
{
if(bmpobj.GetPixel(i, j).R<255)
bmpobj.SetPixel(i, j, Color.Black);
continue;
}

//獲得當前點相鄰的5×5區域內像素值,白色用0代表,黑色用1代表
for (m = 0; m < 5; m++)
{
for (n = 0; n < 5; n++)
{
neighbour[m, n] = bmpobj.GetPixel(i + m - 2, j + n - 2).R < dgGrayValue ? 1 : 0;
}
}

//逐個判斷條件。
//判斷2<=NZ(P1)<=6
nCount = neighbour[1, 1] + neighbour[1, 2] + neighbour[1, 3]
+ neighbour[2, 1] + neighbour[2, 3] +
+neighbour[3, 1] + neighbour[3, 2] + neighbour[3, 3];
if (nCount >= 2 && nCount <= 6)
{
bCondition1 = true;
}

//判斷Z0(P1)=1
nCount = 0;
if (neighbour[1, 2] == 0 && neighbour[1, 1] == 1)
nCount++;
if (neighbour[1, 1] == 0 && neighbour[2, 1] == 1)
nCount++;
if (neighbour[2, 1] == 0 && neighbour[3, 1] == 1)
nCount++;
if (neighbour[3, 1] == 0 && neighbour[3, 2] == 1)
nCount++;
if (neighbour[3, 2] == 0 && neighbour[3, 3] == 1)
nCount++;
if (neighbour[3, 3] == 0 && neighbour[2, 3] == 1)
nCount++;
if (neighbour[2, 3] == 0 && neighbour[1, 3] == 1)
nCount++;
if (neighbour[1, 3] == 0 && neighbour[1, 2] == 1)
nCount++;
if (nCount == 1)
bCondition2 = true;

//判斷P2*P4*P8=0 or Z0(p2)!=1
if (neighbour[1, 2] * neighbour[2, 1] * neighbour[2, 3] == 0)
{
bCondition3 = true;
}
else
{
nCount = 0;
if (neighbour[0, 2] == 0 && neighbour[0, 1] == 1)
nCount++;
if (neighbour[0, 1] == 0 && neighbour[1, 1] == 1)
nCount++;
if (neighbour[1, 1] == 0 && neighbour[2, 1] == 1)
nCount++;
if (neighbour[2, 1] == 0 && neighbour[2, 2] == 1)
nCount++;
if (neighbour[2, 2] == 0 && neighbour[2, 3] == 1)
nCount++;
if (neighbour[2, 3] == 0 && neighbour[1, 3] == 1)
nCount++;
if (neighbour[1, 3] == 0 && neighbour[0, 3] == 1)
nCount++;
if (neighbour[0, 3] == 0 && neighbour[0, 2] == 1)
nCount++;
if (nCount != 1)
bCondition3 = true;
}

//判斷P2*P4*P6=0 or Z0(p4)!=1
if (neighbour[1, 2] * neighbour[2, 1] * neighbour[3, 2] == 0)
{
bCondition4 = true;
}
else
{
nCount = 0;
if (neighbour[1, 1] == 0 && neighbour[1, 0] == 1)
nCount++;
if (neighbour[1, 0] == 0 && neighbour[2, 0] == 1)
nCount++;
if (neighbour[2, 0] == 0 && neighbour[3, 0] == 1)
nCount++;
if (neighbour[3, 0] == 0 && neighbour[3, 1] == 1)
nCount++;
if (neighbour[3, 1] == 0 && neighbour[3, 2] == 1)
nCount++;
if (neighbour[3, 2] == 0 && neighbour[2, 2] == 1)
nCount++;
if (neighbour[2, 2] == 0 && neighbour[1, 2] == 1)
nCount++;
if (neighbour[1, 2] == 0 && neighbour[1, 1] == 1)
nCount++;
if (nCount != 1)
bCondition4 = true;
}

if (bCondition1 && bCondition2 && bCondition3 && bCondition4)
{
bmpobj.SetPixel(i, j, Color.White);
bModified = true;
}
else
{
bmpobj.SetPixel(i, j, Color.Black);
}
}
}
}
// 復制細化後的圖像
// bmpobj = newBmp;
}

⑹ 有沒有關於指紋圖像二值化與細化演算法的matlab程序 謝謝!

這是指紋識別的預處理演算法;拍攝的原始圖片中螺紋顏色為白色,底色為黑色。
首先是去噪;如果某點為白色,且它的8領域內白點數目小於3那麼判定它為干擾信號,置為背景黑色。如果某點位黑色,但它的8領域內白點數大於7個;判定它為干擾信號,置為螺紋的白色。
最後反色,置為螺紋黑色,底色白色,大概是為便於觀察把

⑺ 用自頂向下,逐步細化的方法進行以下演算法設計:求出1900~2000中是閏年的年份

1904,1908,1912,1916,1920...1992,1996,2000總共25個閏年。
方法利用EXCEL 函數,首先在一張新建的空白EXCEL表格A1處填上數字1900,然後下拉至A101,選擇以序列形式填充,這樣就出來了一列數字,從1900知道2000,然後再B1單元格設置函數公式,=IF(MOD(A1,4)+(INT(A1%)=A1%)*MOD(A1%,4),"平年","閏年"),滑鼠拖下來就出來所有的閏年和平年,然後數據-篩選,把所有平年的篩出來刪掉,剩下都是閏年,在C1出寫1,下拖滑鼠至最後一個閏年所在的行C25,得出閏年共25個

⑻ 關於Zhang並行細化演算法

數組初始化出錯

⑼ 怎麼用求解

百錢買百雞問題——一百個銅錢買了一百隻雞,其中公雞一隻5錢、母雞一隻3錢,小雞一錢3隻,問一百隻雞中公雞、母雞、小雞各多少)。這是一個古典數學問題,設一百隻雞中公雞、母雞、小雞分別為x,y,z,問題化為三元一次方程組: 這里x,y,z為正整數,且z是3的倍數;由於雞和錢的總數都是100,可以確定x,y,z的取值范圍: 1) x的取值范圍為1~20 2) y的取值范圍為1~33 3) z的取值范圍為3~99,步長為3 對於這個問題我們可以用窮舉的方法,遍歷x,y,z的所有可能組合,最後得到問題的解。數據要求問題中的常量:無問題的輸入:無問題的輸出: int x,y,z /*公雞、母雞、小雞的只數*/ 初始演算法 1.初始化為1; 2.計算x循環,找到公雞的只數; 3.計算y循環,找到母雞的只數; 4.計算z循環,找到小雞的只數; 5.結束,程序輸出結果後退出。演算法細化演算法的步驟1實際上是分散在程序之中的,由於用的是for循環,很方便的初始條件放到了表達式之中了。步驟2和3是按照步長1去尋找公雞和母雞的個數。步驟4的細化 4.1 z=1 4.2 是否滿足百錢,百雞 4.2.1 滿足,輸出最終百錢買到的百雞的結果 4.2.2 不滿足,不做處理 4.3 變數增加,這里注意步長為3 流程圖 圖5-8 程序執行流程圖程序代碼如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) for(y=1;y<=33;y++) for(z=3;z<=99;z+=3) { if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否滿足百錢和百雞的條件*/ printf("cock=%d,hen=%d,chicken=%d\n",x,y,z); } } 分析程序運行結果如下: cock=4,hen=8,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84 對於這個問題實際上可以不用三重循環,而是用二重循環,因為公雞和母雞數確定後,小雞數就定了,即 。請同學們自己分析二重循環和三重循環的運行次數,做為練習自己調試這一方法。 參考資料:東北大學計算中心 --網路文庫

⑽ Zhang並行快速細化演算法中p2*p4*p6=0 、p4*p6*p8=0是什麼意思

p2*p4*p6=0表示當前點的p2,p4,p6三個領域像素至少有一個灰度值為零。

熱點內容
0123我的世界伺服器 發布:2022-01-18 06:59:27 瀏覽:752
如何編譯代碼 發布:2022-01-18 06:59:23 瀏覽:419
壓縮冰 發布:2022-01-18 06:57:41 瀏覽:768
c語言窗口程序 發布:2022-01-18 06:56:29 瀏覽:517
apache伺服器搭建 發布:2022-01-18 06:47:39 瀏覽:975
資料庫名修改 發布:2022-01-18 06:45:01 瀏覽:386
演算法的優化 發布:2022-01-18 06:41:53 瀏覽:991
方舟伺服器ip 發布:2022-01-18 06:41:51 瀏覽:515
伺服器名稱或ip地址 發布:2022-01-18 06:41:48 瀏覽:672
雲伺服器組建 發布:2022-01-18 06:41:37 瀏覽:855