2009年5月25日 星期一

HW3-cvThreshold()之參數深入解析

請執行
cvThreshold( gray, bw, 127, 255, CV_THRESH_BINARY );
cvThreshold( pImg, pImg2, 127, 255, CV_THRESH_BINARY );

請問
1. 這兩個指令 有何不同 ?
2. pImg2這張影像 最多可能有幾種顏色 ?

延伸題目:
將 bw影像 白點變黑點 黑點變白點

3 則留言:

  1. 延伸題目
    要將bw影像白點變黑點、黑點變白點,其實很簡單,只要改變cvThreshold()的參數就行了

    cvThreshold(x,y,T,MaxValue,Type)
    x,y分別是來源影像和目的影像,簡單的說就是將來源影像做一些處理後顯示在目的影像
    T則是Threshold,用來去判別X裡的色彩值
    MaxValue是cvThreshold()使用的一個變數,和Type的使用有關
    Type則代表要如何去做處理

    threshold_type=CV_THRESH_BINARY:
    dst(x,y) = max_value, if src(x,y)>threshold
    0, otherwise

    threshold_type=CV_THRESH_BINARY_INV:
    dst(x,y) = 0, if src(x,y)>threshold
    max_value, otherwise

    threshold_type=CV_THRESH_TRUNC:
    dst(x,y) = threshold, if src(x,y)>threshold
    src(x,y), otherwise

    threshold_type=CV_THRESH_TOZERO:
    dst(x,y) = src(x,y), if src(x,y)>threshold
    0, otherwise

    threshold_type=CV_THRESH_TOZERO_INV:
    dst(x,y) = 0, if src(x,y)>threshold
    src(x,y), otherwise

    這是網站上的定義,OpenCV的資料夾裡有!!

    所以白點變黑點、黑點變白點只要使用CV_THRESH_BINARY_INV就搞定了 (其他的參數不用改喔!!)

    回覆刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 1. 這兩個指令 有何不同 ?
    2. pImg2這張影像 最多可能有幾種顏色 ?

    這兩個問題,其實困惑我很久了,也不知道想的對不對,所以參考參考吧!!

    1.要說有甚麼不同,應該只有他的參數不同而已
    一是針對灰階影像去處理,而另一個則是針對彩色影像取處理

    2.pImg2的顏色應該有(0,0,0),(0,0,255),(0,255,0)...(255,255,255),所以有8種

    回覆刪除