kirsch運算元實現

2021-07-23 11:44:29 字數 1559 閱讀 9618

kirsch原理:

kirsch運算元是r.kirsch提出來一種邊緣檢測新演算法,它採用8個模板對影象上的每乙個畫素點進行卷積求導數,這8個模板代表8個方向,對影象上的8個特定邊緣方向作出最大響應,運算中取最大值作為影象的邊緣輸出(上述演算法中用到的8個模板在下面的實現**中給出)。為了便於讀者理解該演算法的實現,這裡我們給出實現該演算法的函式**,讀者可以稍加改動應用到自己的專案中去。

[1]int ntemplate[8][9]=, ,

, ,, ,

,};//3×3

用這個8個模版來計算每個邊緣方向的最大響應值作為邊緣特徵值-邊緣強度。

c++**實現:

bool cwmspatialdomain::kirsch(handle himage) ,

, ,, ,

, ,};//3×3

int nsum[8];

if(himage==null)

int i, j, k, l;

int bthre = 5;

bitmapinfoheader ds;

memcpy(&ds,himage, sizeof(ds));

int effwdt = ((((ds.bibitcount * ds.biwidth ) + 31) / 32) * 4);

byte* pbbits = (byte*)himage + *(dword*)himage + ds.biclrused * sizeof(rgbquad);

writelog(tra_level_debug,_t("cimagewatermarktest::kirsch, pic's width=%d, height=%d"),ds.biwidth,ds.biheight);

switch (ds.bibitcount) 

else

} else

} m_ipframework->setposprogressctrl(int((i+1)*100/ds.biheight)); }

m_ipframework->setposprogressctrl(100);

m_ipframework->hideprogressctrl();

delete pimage; }

break;

case 24: // 24-bit dib

else

} else

} m_ipframework->setposprogressctrl(int((i+1)*100/ds.biheight)); }

m_ipframework->setposprogressctrl(100);

m_ipframework->hideprogressctrl();

delete pimage; }

break;

default: // unrecognized color format

writelog(tra_level_warn,_t("cimagewatermarktest::kirsch, unrecognized color format"));

return false; }

return true; }

VC 鉤子實現及應用

關於鉤子 請參見微軟中國社群中 hook專題 一文。純c 鉤子 hook 實現 要實現系統鉤子其實很簡單,呼叫三個win32的api即可。setwindowshookex用於設定鉤子。設立一道卡子,盤查需要的資訊 dllimport user32.dll callingconvention call...

SElinux 學習筆記 例子實現

測試環境介紹 作業系統 fedora 22 mate fedora 21 環境搭建 root yum install y policycoreutils python policycoreutils devel selinux policy devel setools hddtemp git vim...

PHP的鉤子實現解析

php程式設計的鉤子實現,示例講解和解釋它們的作用,寫了乙個樣板的鉤子實現 鉤子是程式設計裡乙個常見的概念,非常的重要。它使得系統變得非常容易拓展 而不用理解其內部的實現機理,這樣可以減少很多任務作量 只要有乙個鉤子樣本,能很容易仿照第乙個鉤子快速的編寫第二個鉤子,這裡對鉤子進行乙個簡單的理解。下面...