主頁 >  其他 > 【工程應用一】 多目標多角度的快速模板匹配演算法(基于NCC,效果無限接近Halcon中........)

【工程應用一】 多目標多角度的快速模板匹配演算法(基于NCC,效果無限接近Halcon中........)

2021-04-07 07:56:23 其他

       愿意寫代碼的人一般都不太愿意去寫文章,因為代碼方面的藝術和文字中的美學往往很難兼得,兩者都兼得的人通常都已經被西方極樂世界所收羅,我也是只喜歡寫代碼,讓那些字母組成美妙的歌曲,然后自我沉浸在其中自得其樂,而今天,在清明之際,在踏青時節,我還是忍不住停下來歇歇腳,稍微共享一下最近一直研究的一個非常基礎的演算法和應用 - 多目標多角度的模板匹配,

       模板匹配,這是一個幾十年來一直為業界所重點研究和處理的演算法,存在于各種不同的機器視覺庫中,如果哪一個沒有提供這個功能,那么他將無法獲取大家的認可,也就失去了最基本的活力,可以說模板匹配基于機器視覺就相當于陣列在編程語言中一樣,基礎但是不可或缺,

       在2004年時,我的畢業設計中一個很重要的部分也是模板匹配,當時用模板匹配找到每個量杯中黃色的油的位置,現在看來用那個演算法也是醉了,不過能順利畢業還考得就是他,

       在我的早期博客中,有一篇文章已經談到了這個演算法,詳見:標準的基于歐式距離的模板匹配演算法優原始碼化和實作(附源代碼), 但是這個是個非常慢的程序,而且是單目標無旋轉的實作,在實際應用中,這個基本沒有啥實際的價值,

       在工業應用場合,有著非常廣泛使用場景的是多目標多角度的模板匹配(基本無縮放或輕微縮放),這方面實作的比較好的有halcon、海康、康耐視等,國內也有一些小單位有做研究,而且效果不錯,在網路上其實也有比較多的文章談到了多目標模板匹配,基本上都是基于Opencv實作,良心的說也談到了一些核心技術,但是還是皮毛,基本都是一帶而過,而且實作的效率也基本是沒有什么實用價值的,可能是怕說多了別人學會了吧,

       雖然在我的實作中,也參考了不少網路上的文章,但是大部分的細節還是靠的自己的思考和朋友的一些指導,為了尊重他人,我也不打算特別深入講解我的實作,但是還是把一些具有一定深度的問題提出來,也算是回報網路吧,

      1、概述

       這里先提工業界最為常用,也是最為基本的模板匹配方式,基于NCC的灰度模板匹配,

      NCC,全稱為Normalized Cross correlation,即歸一化互相關系數,  在模板匹配中使用的非常非常廣泛,也是眾多模板匹配方法中非常耀眼的存在,  這個匹配的理論核心基礎公式如下:

                                                                         (1)

        該方法也存在于Opencv的matchTemplate中,較之其他的CV提供的匹配方法,該演算法對于光照、噪音等等的影響,穩定性更佳,也是halcon等商用軟體內嵌的基于像素的模板匹配標準方法,

        他的理論匹配度范圍是[-1,1],為-1時表示2副影像的極性完全相反(原圖和反色后的圖),為1則表示兩幅圖完全一樣,一般我們在計算NCC的時候都是取的絕對值,因此,通常NCC的取值為[0,1],值越大,表示兩幅影像越相似,

        實際編程實作時,千萬不要直接用這個公式,如果你使用,那你離砸電腦已經不遠了,請一定要相信我,

        實際中,我們都用下面的式子來實作編碼(不要問我里面的符號的意思,兩個圖來自不同的資料,里面的字母也不一樣,但是要研究的這個的人都應該能看懂):

                                         (2)

    這個式子看上去更為復雜,但是實質上和公式(2)和公式(1)就是同一個東西,公式(2)我們可以把他拆解為7個部分,我們一1道來,

       ①、這個留到最后在說,

       ②、T代表的是模板,那么②對于固定的模板來說就是一個定值,在匹配前可以直接計算好,無需擔憂耗時問題,

       ③、I 表示的搜索影像中的和模板一樣大的一個子塊,很明顯這個累加有多重方法可以快速的實作,比如比較原始的積分圖技術,或者我的BoxBlur里的那種更為快速的實作,這一項也是和引數無關的,

       ④、第四項處理方式同 ②項,無需多言,

       ⑤、第五項完全同第二項,同時四和五項作為一個整體也可以提前計算好,不參與匹配程序的計算,

       ⑥、第六項處理方式同第三項,也無需多言,

       ⑦、第七項完全同第三項,直接使用,

       前面的分析表明,第二至第七項要買可以作為常量提前計算好,要么就可以通過某種技術實作O(1)的快速計算,那么現在我們再回過頭來在看第①項,他是模板影像和搜索影像同面積區域像素的一個卷積,這個是無法用某種優化技巧去實作和模板大小無關的快速實作的,注定了他就是NCC計算式中最為耗時的部分,

       有人說卷積可以有FFT實作優化,沒錯,非常同意您的觀點,但是,朋友,FFT雖然其第一個F代表了Fast,但是呢他在傅里葉的世界是快的,在我們模板匹配的空間內他受到了一種無形的壓迫,在工業界還是無法接受的,

       因此,我們注意到在本例中,這個卷積其實都是位元組型別的計算,對于一個N*M大小的模板圖,這個卷積需要N*M次乘法以及N*M-1次加法,由于是整數計算,本身運算速度還算比較快的,而且如果在PC上我曾經提及過有一種使用SIMD指令的提速方法,大概能有10倍的運力提高,核心是使用_mm_madd_epi16(對應PMADDWD這個指令),

  其原理如下:

_m128i _mm_madd_epi16(__m128i a, __m128i b)

     Multiplies the 8 signed 16-bit integers from a by the 8 signed 16-bit integers from Adds the signed 32-bit integer results pairwise and packs the 4 signed 32-bit integer results. 

     該指令可以一次性執行8個16位資料的乘法及4次加法,而我們只要提前把8為位元組資料轉換為16為資料就可以了, 通常這可以由_mm_unpacklo_epi8或者_mm_ cvtepu8_epi16實作,

      2、進一步提升

   有了上一步的分析,也許你就準備開始動工了,千里之行始于足下嘛,但是作為過來人,我奉勸你除非是為了看效果,否則,你還是等一等吧,下面的更精彩,

      如果我們按照公式(2)就開始霸王硬上弓,大部分情況下你需要耐心的盯著你的螢屏滑鼠在那里轉圈轉圈轉個10來秒吧,然后就可以見證奇跡了,也許作為初學者,你會心動,而那些需要靠這個吃飯的,可能就是心痛了.........

      為了得到更快的搜索速度,一個最容易想到的策略就是影像金字塔,影像金字塔每增加一層,影像的點數和模板的點數救減少4倍(理論資料,實際由于非2的寬度和高度,不一定正好是4倍),那么不考慮Cache等其他的因素,理論上每增加一層金字塔救可以提速16倍,因此,如果我們構建了一個4層的金字塔,那么在第4層金字塔上的一次完整匹配,其計算的次數和原始的資料相比,就能減少4096倍,

     我們先以無旋轉單目標為例進行簡單的說明,當我們在金字塔最高層進行一次完整的匹配后,我們可以找一個全域的極值點,這就是在頂層匹配時的最佳匹配位置,此時,我們可以將頂層匹配的結果映射到金字塔的下一層中,簡單的說就是將找到的匹配點坐標的X/Y值乘以2,那么為了保證在下一層中的精度,此時的搜索區域需要適當的增大,比如選擇匹配點周圍5*5或者7*7的一個區域,然后在這感興趣的區域中再進行一個區域的匹配計算,此時只需要計算25或者49次小匹配的計算,當計算完畢后,再次提取出這個小區域的極值,作為本層的最終種子點,重復這個程序,直到金字塔的最底層(即原始搜索影像)為止,

  稍微分析下,假定上述我們的搜索的區域范圍為5*5大小,金字塔取為4層,那么整體的計算量是原始直接計算的多少呢,這樣評價:

                式中M和N分別表示影像的寬度和高度,

       一般來說M和N都是至少以百為單位的,因此上述計算式的結果相當小,速度可以得到極大的提升,

       這里針僅對一個問題進行展開,即金字塔構建時采用何種下采樣演算法,討論如下:

       ①、最近鄰,這個結果太粗糙,不利于演算法穩定性,可以直接Pass掉,

       ②、雙線性插值,這個兼顧速度和效果,是個可以考慮的選項,

       ③、三次立方插值,這個東西在影像放大時是個不錯的選項,而金字塔得建立是縮小程序,

       ④、蘭索斯插值,這個類似于三次立方插值,

       ⑤、采用嚴格的高斯金字塔采樣矩陣,一個5*5的矩陣,如下所示: 

           

 

        對于縮小,其實③④⑤都不是很好,③內部是一個4*4的取樣,④是一個8*8的取樣,我舉一個簡單的例子,

                  

       原圖(注意紅色框部分的效果)                                              最近鄰           雙線性            三次立方         蘭索斯

      大家可用大一點的螢屏去觀察,可以看到紅色方框內在原圖部分為非常光滑的,而四個插值中,最近鄰有所模糊,三次立方和蘭索斯在風車葉片邊緣出現了鋸齒,只有雙線性完美的保存了葉片的邊緣光滑性,

      那么經過我的實測,一種更好的方式是直接使用2*2均值下采樣,也就是使用2*2區域內的所有像素的平均值,2*2均值濾波器有一個非常好的特性,他沒有頻率回應問題,而較大的濾波器均存在該問題,同時,使用該濾波器還有一個優異的特性,即他可以以非常高效的方式實作,

      當影像的寬度和高度都為2的整數倍時,如果選用雙線性插值建立下一層金字塔,此時的雙線性就退化為了2*2均值濾波器,

      這里留一個問題大家共同探討吧:

      問題1: 使用2*2均值濾波器時,對于非偶數的寬度和高度,比如W0 = 101,下一層金字塔的寬度W1到底是取50,還是取51呢,如果取51,那么第51個像素如何獲取結果(2*2取樣會越界)呢?

      3、多目標

      現實中通常需要在一副原圖中尋找多個匹配的目標,此時,我們的難度就有所上升了,金字塔我們依舊還可以使用,但是如何區分多目標呢,

      在單目標時,我們對最高層金字塔進行了全圖匹配后,只需要取最大的匹配值作為候選點,這也是理所當然的,當問題來到多目標時,一個自然的想法就是對匹配值進行排序,然后取前N個最大值作為候選點,但是,這種直接的想法確實非常的不科學的,因為通常在某個最大值附近,由于鄰域的相似性,還存在很多和最大值非常接近的得分點,而他們實際上都是對應同一個目標,

      在百度搜索多目標模板匹配,大部分情況你會找到如下的一段代碼:

Point getNextMinLoc(Mat &result, Point minLoc, int maxValue, int templatW, int templatH)
{
    int startX = minLoc.x - templatW / 3;
    int startY = minLoc.y - templatH / 3;
    int endX = minLoc.x + templatW / 3;
    int endY = minLoc.y + templatH / 3;
    if (startX < 0 || startY < 0)
    {
        startX = 0;
        startY = 0;
    }
    if (endX > result.cols - 1 || endY > result.rows - 1)
    {
        endX = result.cols - 1;
        endY = result.rows - 1;
    }
    int y, x;
    for (y = startY; y < endY; y++)
    {
        for (x = startX; x < endX; x++)
        {
            float *data = https://www.cnblogs.com/Imageshop/p/result.ptr<float>(y);
            
            data[x] = maxValue;
        }
    }
    double new_minValue, new_maxValue;
    Point new_minLoc, new_maxLoc;
    minMaxLoc(result, &new_minValue, &new_maxValue, &new_minLoc, &new_maxLoc);
    return new_minLoc;
}

  這是一段比較好的參考代碼,但是僅僅是比較好,還不能解決很多問題,但是我們可以從中學習到一些東西,

        代碼中輸入引數中有一個引數是前一次的最小值的坐標,然后在這個坐標附近一定的矩形范圍內(上述代碼是模板影像的1/3尺寸),將得分值修改為某個很大的值,接著再進行全范圍的最大和最小值定位,此時,肯定就定位到了離輸入最小值有一定距離的另外一個最小值,而輸入最小值附近的那些次小值就不會干擾結果,

       注意上面代碼是最小值,因為他用的檢測指標是CV_TM_SQDIFF_NORMED,而非NCC,對于NCC,則需要歸為最大值,

       這里的templatW / 3和templatW / 3有點重疊范圍的意思了,但是還完全不夠,

       在最頂層金字塔中找到了多個目標的粗糙位置后,就可以和前所述的一樣的方式一步一步的向下一層金字塔進行細化,直到處理到頂層金字塔為止,

       4、多目標+多角度

       當問題來到這里時,整個的難度就是階躍式的提高了一個檔次,

       如果目標存在旋轉,為了能找到發生旋轉的物體,我們可以創建多個方向的旋轉物件,也就是說,將搜索空間離散化,此時,有兩個可選的方式:一個是旋轉搜索影像,然后用模板在旋轉后的影像中搜索,二是旋轉模板,用旋轉后的模板在搜索影像中定位,我們說,第一種方式基本不可取,原因有三,

       (1)、搜索影像一般來說都是較大的圖,對其進行旋轉耗時比較可觀,、

       (2)、實際情況需要多個角度的旋轉,對原圖旋轉記憶體方面也會有過多的消耗

       (3)、工業應用時,一般模板比較固定,而搜索影像總是時刻變化的,

       當選擇第二種方法時,對于較小的模板影像,是可以在執行搜索前把相關旋轉資訊提前準備好,在搜索時刻直接使用,而無需做無謂的耗時,

       此時,在金字塔的最頂層,需要做的計算作業也有所增加,我們需要對每個角度的模板都做一個全圖的匹配,得到匹配的結果,然后對每個可能點,選擇匹配度最大的那個角度作為頂層的候選點,

       類似的,在向下一層金字塔映射時,不僅僅需要映射匹配點的X和Y坐標,還需要映射角度資訊,同理,為了保證角度方面的精度,也需要適當的擴大角度的搜索區間,

       5、更多的問題

       實際上,為了實作多目標和多角度的匹配,還存在很多很多的細節問題,需要取研究,這些方面的細節有些已經有了部分結論,但是大部分在網路上鮮有探討和方向,這里列出一些問題和大家共同探討一番,

       問題2:金字塔多少層比較合適?

       前面提到了金字塔層數越多,所需的計算量就越少,但是同時帶來一個問題,就是計算的精度會越來越差,這是因為,隨著金字塔層數的增加,因為二次采樣影像會不斷的得到平滑,在影像解析度變得太低時一些基本的特征已經完全丟失,各種本來不想關的資訊已經完全融合在一起了,因此,一個合適的金字塔層數就尤為重要,一些成熟的商業軟體一般可提供用戶自行輸入金字塔層數,或者自動確定,對于大部分用戶而言,他們不懂得更多的技術細節,自動設定顯得尤為重要,

       我們以工業界最為出色Halcon軟體為例,經過多次測驗,他的金字塔層數的自動設定是非常智能化的,基本上自動可以保證速度最優同時效果穩定,通常,我們認為金字塔的層數只和模板影像的尺寸有關,但是,一些仔細的測驗表明,兩幅同樣大小的模板圖,halcon也有可能但不一定回傳不同的值,估計這其中還用到了影像的一些相似性或者結構方面的一些資訊作出的綜合判斷,不過,一個最基本的規律,還是可以分享下,那就是如果金字塔某層的短邊像素小于或者等于8了,你們這肯定是此模板金字塔層數的極限了,

       問題3:角度離散化的間距如何設定最為合理?

       類似于金字塔,角度離散化的間距越大,需要計算的旋轉方面的資訊就越少,速度則可以更快,但是同樣,精度就越差,

       一般來說,如果模板越大,離散化的間距則需要越小,這是因為較大的模板能夠區別更小角度的變化,通常,對于大小100像素的模板,離散的角度步幅可設定為1度,同樣,如何自動的設定引數也應該是一個成熟軟體的標志,一個可行的建議是離散的步長需要保證旋轉時兩個相鄰模板之間的長或寬的最小差異值不小于1個像素,

       問題4:模板的旋轉如何處理?

       通常可以用雙線性插值或者三次立方插值,來獲取旋轉后的資料,不建議用最近鄰演算法,但是不同的旋轉演算法,最后得到的匹配結果會有所不同,同時這也就說呢,其實帶角度的模板匹配,理論上很難獲取精確解,因為你畢竟不知道原始的旋轉演算法是何種,比如我從一個未旋轉影像中扣一個矩形出來作為模板, 然后把影像旋轉各10度,用halcon對模板進行匹配,得到的結果哪怕選擇亞像素也不會是精確的10度,

      問題5:旋轉后無效資料的部分怎么辦?

      在對模板進行旋轉時,除非是幾個特殊的角度,比如0、90、270、360度,不會產生額外的資訊,其他的角度,都會有一些未知的區域存在,如下圖所示:

  

               原   圖                                                                            旋轉一定的角度 (雙線性插值)                                                   邊緣處區域放大

       中間為旋轉后的模板,紅色部分為新出現的未知區域,如果說我們這個圖作為一個整體,去和原影像進行匹配,也就是說讓紅色部分參與了匹配,這很明顯會得到一個得分較低的錯誤結果,

       一種也許可行的方式是,我們把這些紅色的區域剔除在匹配有效的資料之外,這時,又會面臨另外一個新的問題,在影像的邊緣部分如何處理,在上面邊緣處區域的方法圖中,我們可以看到,由于插值的特性,邊緣處未能在原始影像中采集到足夠的采樣點,因此,選擇了紅色背景色作為融合的基色,此時的結果像素就不完全是屬于原始影像了,怎么辦?個人的一個建議是既然這部分像素也被污染了,那就不應該參與后續的匹配,

    此時,在編程方面就需要繼續克服下一個困難了,前面概述方面講的一些優化方式又不能直接使用了, 真是他媽的痛苦,所以,借用某一本書里的經典勸退名言吧:聰明的機器視覺用戶都依賴標準軟體包來提供這些功能而不會試著自己實作這些演算法

      問題6:各層金字塔的角度離散值如何分配?

      通常,在金子塔的最底層(和原圖一樣大小那一層),可按照前述的自動角度幅值來一步一步的旋轉影像,然后隨著金字塔的層數增加,根據模板在每層金字塔中都會縮小2倍的這個事實,在相應金字塔上模板的角度步幅也可以增加2倍,因此,如果在金字塔最底層上使用的角度步幅為1度,那么在第四層上可以使用8度作為角度步幅,

      這樣做帶來的好處有很多,因為,通常,我們需要在最頂層做多角度的全圖的匹配,這個計算的相對來說比較大,如果角度步幅在該層得以以指數級別減少,則計算量也會有量級的降低,

      問題7:各層金字塔的最低得分值如何確定?

      前面一直沒提這個得分的問題,在單目標中一般是不存在這個問題的,當有多個目標時,因為可能不是完整的匹配,因此一般需要客戶確定一個最小的得分值,當然這個得分是指的在最底層時的值,當有了金字塔后,因為下采樣的一些因素,為了有更高的容錯率,一般是建議每增加一層金字塔,最小的得分值需要適當的降低,比如,用戶設定的最小得分為0.8,后續各層的得分可以為:

            0.8            0.8*0.9    0.8*0.9*0.9     0.8*0.9*0.9 * 0.9  

  當然,其他的調整方式也未嘗不可以,但是,總體的區域需保證最小得分越來越低,  

  問題8:MaxOverlap是什么鬼,內部是如何操作的?

       在Halcon中,還有非常重要的引數-MaxOverlap,一個介于0和1之間的引數,前面也一直沒有談到過,其實,在真正的應用中,存在著一些目標之間有一定程度重疊的情況,這個時候,如果按照前面的那些處理方式,一般就只能獲取到重疊物件的某一個,而丟掉了其他的資訊,當有了MaxOverlap引數時,我們就可以根據這些物件的重疊重復,來決定是否剔除掉某一個不需要的目標,

       但是,這也是一個比較難以琢磨的物件,Halcon幫助檔案中的說法是取的物件的最小外接矩形中的重疊比例,說實在的,編程時,這個規則應該還不夠,比如,如果有4個物件,他們都有所重疊,請問這個時候,這個MaxOverlap是指的所有的重疊量合并在一起呢,還是最大的重疊,抑或是按照得分順序第一個和之重疊的呢,目前,我也是對這個比較搖擺,

      同時,另外一個比較難以確定問題是,這個重疊是在金字塔的最頂層就進行判斷還是如何呢,如果在金字塔的最頂層不進行判斷,那么金字塔頂層中得分大于MinScore的則有很多個點,如果把這些點都直接向上一層進行映射,那個計算量也是相當客觀的,

      問題9:亞像素坐標和角度是一起執行的嗎,還是分開的?

      沒有亞像素的模板匹配是沒有靈魂的,特別是帶有角度的匹配,因為,正如前面所述,我們對角度采用了離散化,那么這個時候計算的最終角度結果必然是離散化后的序列里的某個值,這樣的精度有的時候是不夠的,

      通過亞像素技術,尋找區域區域里的最大值,課獲得更高的位置精度和角度精度,則可以有效的獲得精準的定位,

      但是目前還是不清楚坐標+角度組成的4維的空間的亞像素計算公式是如何的,

     問題10:速度優化?

      以上談的一些優化基本上是結構上的優化,或者說原理上的優化,在編碼上還可以考慮時候用SIMD指令進行處理,尤其是全圖匹配的計算程序,

      6、公關成果

       大概前前后后再一起有折騰了大概一年的時間吧,初步還是有了一定的成果,無論是在速度上,還是在準確度中,還是能解決一定的工程問題了,

       共享一些測驗圖,和大家一起比較,

                   

       模板圖                 待搜索圖                                  搜索結果

 

                    

         模板圖                  待搜索圖                                  搜索結果

      基于NCC的速度方面和很多引數有關,比如角度的搜索范圍,金字塔層數,模板的大小(一般模板大,速度反而快些,特別小的模板則非常耗時,知道原因嗎?),重疊的大小等等都有關,一些簡單的測驗資料如下:

          

       雖然歷經千辛萬苦,在磨礪了很久之后,也對這個初有小成,基本實作了這樣的一些程序,但是和halcon相比,無論是從穩定性還是效率方面都還是有一定的差距的,所以標題中的無限接近 就是一句誑語而已,

      本演算法目前已經集成到國產視覺軟體Malcon中,詳情請看 中國的Malcon跟德國的Halcon的相比的優缺點

      Malcon官方博客:https://www.cnblogs.com/Malcon

      或者點擊:         https://blog.csdn.net/lindrs/article/details/114113280?spm=1001.2014.3001.5502

      Malcon中還集成了很多其他常用的200多個算子,相信您一種能從其中找到你所需要的,

      如果你希望有一個簡單的可視化測驗界面,可以從如下鏈接中獲取,但是請注意這個Demo本身是有一些BUG的(不影響測驗使用),請不要將其直接應用到工業環境中,以免造成不必要的損失,

       可視化測驗Demo:   https://files.cnblogs.com/files/Imageshop/TemplateMatching.rar

       7、更多疑惑

       弄得越多,發現不了解的也越多,特別是在研究比對Halcon的程序中,還發現了一些暫時沒有弄清楚的事情,比如:

       ①、在不勾選亞像素時,Halcon回傳的坐標值很多情況下也是帶小數點(特別是非0度時的結果),這個作何解釋,

       ②、當模板的理論角度是0度時,即使按照AngleStart和AngleStep的值依次計算,取樣的角度值不會準確的取為0,而且也未勾選亞像素,他也能正確的回傳0值,難道他對0度做了特別的處理嗎?

       這些還需要慢慢的取探索,

       如果您覺得本博文對您有所幫助,也可慷慨解囊,

        

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/273153.html

標籤:其他

上一篇:WebGPU[5] uniform顏色

下一篇:頭條面試題:判斷一個數是否是happy number(每一位的平方和最終為1)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more