線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1572
推到 Plurk!
推到 Facebook!

影像相減結果

答題得分者是:JerryKuo
jiaching
一般會員


發表:21
回覆:21
積分:8
註冊:2003-07-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-16 12:31:18 IP:211.76.xxx.xxx 未訂閱
[引用] show1=(0.299*r1 0.587*g1 0.114*b1); show2=(0.299*r2 0.587*g2 0.114*b2); show3=abs(show1-show2); 我有一張背景圖片 一張背景圖片加人臉(都是彩色的) 要做相減的動作 得出人臉 但是用了以上的程式碼之後 很顯然的show3會是灰階的結果 請問有辦法得出彩色的結果嗎?
Brian77
中階會員


發表:8
回覆:114
積分:94
註冊:2002-05-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-16 12:46:24 IP:61.61.xxx.xxx 未訂閱
改成直接將兩個 TColor XOR 呢?
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-17 11:37:32 IP:61.230.xxx.xxx 未訂閱
你好: 請問得到的彩色結果是要做什麼用的?這些RGB值有要做後續處理嗎? 如果還要做處理,就像Brian說的:直接RGB相減。 還是為視覺效果?
jiaching
一般會員


發表:21
回覆:21
積分:8
註冊:2003-07-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-17 13:02:13 IP:211.76.xxx.xxx 未訂閱
版主你好~~~    我的目的是有一張背景 然後有一張背景加人臉... 想說用相減的方式 抓出整個人臉....這時候希望是彩色的 因為我還要把人臉的膚色轉為YCRCB....所以應該是要用彩色的 我猜~~~~    所以直接RGB相減的話 不太董說 可不可以說的詳細一點點就好  感激不盡~~~
jiaching
一般會員


發表:21
回覆:21
積分:8
註冊:2003-07-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-17 15:09:52 IP:211.76.xxx.xxx 未訂閱
我試了一下  我是採用RGB 先轉YCRCB 在做相減 這樣可以嗎    
// 其中ptr1指的是背景圖  ptr2指的是非背景圖  
   b1=ptr1[i*3];
   g1=ptr1[i*3+1];
   r1=ptr1[i*3+2];
   b2=ptr2[i*3];
   g2=ptr2[i*3+1];
   r2=ptr2[i*3+2];
   y1=0.257*r1 +0.504*g1+0.098*b1+16;
   cr1=0.439*r1-0.368*g1-0.071*b1+128;
   cb1=-0.148*r1-0.291*g1+0.439*b1+128;
   y2=0.257*r2 +0.504*g2+0.098*b2+16;
   cr2=0.439*r2-0.368*g2-0.071*b2+128;
   cb2=-0.148*r2-0.291*g2+0.439*b2+128;    //if(cr1==cr2&&cb1=cb2) 這個地方是這樣寫嗎 還是有錯?
//以下是只用了 cr去判斷而已 因為上面那個if 好像有一點問題 不太會改  
  if(cr1==cr2)
  {
  ptr1[i*3]=b2;
  ptr1[i*3+1]=g2;
  ptr1[i*3+2]=r2;
  }
  else
  {
  ptr1[i*3]=255;
  ptr1[i*3+1]=255;
  ptr1[i*3+2]=255;
  }
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-17 15:33:03 IP:61.230.xxx.xxx 未訂閱
你好:    以下是我想法給你參考: 1.你的目的應該是取出人臉,而Y Cb Cr只是用來分開前景背景的依據,並不定 三個值都要做比較,一般都是以Y值(亮度)做為比對的依據,Cb,Cr(彩度)比較 不常被使用,代表物理意義薄弱。 所以將比對出的Y值差△y,當作相似依據,(也就show3)
  △y = 0 → (x,y)相似(x',y'),視為背景,此點清除
  △y ≠ 0 → (x,y)不相似(x',y'),視為前景,此點保留
保留意指保留原始像素值,而不是Y值。 不知道你是不是想要這樣做呢?
jiaching
一般會員


發表:21
回覆:21
積分:8
註冊:2003-07-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-18 02:56:25 IP:211.76.xxx.xxx 未訂閱
感謝JerryKuo版主~~~ 我以下的程式碼是可以run出來 這樣寫應該對吧~~~ 其中threshold5是我的scrollbar的position b2 g2 r2是非背景圖的像素值    
int delta=y1-y2;
   if(delta>threshold5)
  {
  ptr1[i*3]=b2;
  ptr1[i*3 1]=g2;
  ptr1[i*3 2]=r2;
  }
  else
  {
  ptr1[i*3]=255;
  ptr1[i*3 1]=255;
  ptr1[i*3 2]=255;
  }
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-18 10:37:18 IP:61.230.xxx.xxx 未訂閱
引言: 感謝JerryKuo版主~~~ 我以下的程式碼是可以run出來 這樣寫應該對吧~~~ 其中threshold5是我的scrollbar的position b2 g2 r2是非背景圖的像素值
int delta=y1-y2;
   if(delta>threshold5)
  {
  ptr1[i*3]=b2;
  ptr1[i*3 1]=g2;
  ptr1[i*3 2]=r2;
  }
  else
  {
  ptr1[i*3]=255;
  ptr1[i*3 1]=255;
  ptr1[i*3 2]=255;
  }
呃~~對不對?不要問我吧,題目又不是我出的 又不能幫你打個勾,如果你覺得可以就可以囉。
jiaching
一般會員


發表:21
回覆:21
積分:8
註冊:2003-07-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-18 12:06:36 IP:211.76.xxx.xxx 未訂閱
恩恩 我覺得可以  還是感謝你喔~~~
系統時間:2024-04-29 18:40:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!