gray的演算法
『壹』 鍥懼儚澶勭悊涓錛屽浘鍍忕殑浜搴﹀煎拰鐏板害鍊兼湁浠涔堝尯鍒鍚楋紵榪樻槸涓涓鎰忔濓紝涓嶅悓鐨勫彨娉曞憿錛
鍥懼儚鐨勪寒搴﹀煎拰鐏板害鍊兼槸鏈夊尯鍒鐨勶紝鍖哄埆涓猴細鍥捐薄浜搴︽槸鎸囩敾闈㈢殑鏄庝寒紼嬪害錛屽崟浣嶆槸鍫寰鋒媺姣忓鉤綾(cd/m2)鎴栫Оnits銆傜伆搴︽槸鎸囨妸鐧借壊涓庨粦鑹蹭箣闂存寜瀵規暟鍏崇郴鍒嗘垚鑻ュ共綰э紝鍏惰寖鍥翠竴鑸浠0鍒255錛岀櫧鑹蹭負255錛岄粦鑹蹭負0銆
鎵╁睍璧勬枡錛
鐏板害涓庝寒搴︾殑鍏崇郴錛
杞鎹㈠叕寮:
涓銆佸熀紜
瀵逛簬褰╄壊杞鐏板害錛屾湁涓涓寰堣憲鍚嶇殑蹇冪悊瀛﹀叕寮忥細
Gray=R*0.299+G*0.587+B*0.114
浜屻佹暣鏁扮畻娉
鑰屽疄闄呭簲鐢ㄦ椂錛屽笇鏈涢伩鍏嶄綆閫熺殑嫻鐐硅繍綆楋紝鎵浠ラ渶瑕佹暣鏁扮畻娉曘
娉ㄦ剰鍒扮郴鏁伴兘鏄3浣嶇簿搴︾殑娌℃湁錛屾垜浠鍙浠ュ皢瀹冧滑緙╂斁1000鍊嶆潵瀹炵幇鏁存暟榪愮畻綆楁硶錛
Gray=(R*299+G*587+B*114+500)/1000
RGB涓鑸鏄8浣嶇簿搴︼紝鐜板湪緙╂斁1000鍊嶏紝鎵浠ヤ笂闈㈢殑榪愮畻鏄32浣嶆暣鍨嬬殑榪愮畻銆傛敞鎰忓悗闈㈤偅涓闄ゆ硶鏄鏁存暟闄ゆ硶錛屾墍浠ラ渶瑕佸姞涓500鏉ュ疄鐜板洓鑸嶄簲鍏ャ
灝辨槸鐢變簬璇ョ畻娉曢渶瑕32浣嶈繍綆楋紝鎵浠ヨュ叕寮忕殑鍙︿竴涓鍙樼嶅緢嫻佽岋細
Gray=(R*30+G*59+B*11+50)/100
浣嗘槸錛岃櫧璇翠笂涓涓鍏寮忔槸32浣嶆暣鏁拌繍綆楋紝浣嗘槸鏍規嵁80x86浣撶郴鐨勬暣鏁頒箻闄ゆ寚浠ょ殑鐗圭偣錛屾槸鍙浠ョ敤16浣嶆暣鏁頒箻闄ゆ寚浠ゆ潵榪愮畻鐨勩
涓夈佹暣鏁扮Щ浣嶇畻娉
涓婇潰鐨勬暣鏁扮畻娉曞凡緇忓緢蹇浜嗭紝浣嗘槸鏈変竴鐐逛粛鍒剁害閫熷害錛屽氨鏄鏈鍚庣殑閭d釜闄ゆ硶銆傜Щ浣嶆瘮闄ゆ硶蹇澶氫簡錛屾墍浠ュ彲浠ュ皢緋繪暟緙╂斁鎴2鐨勬暣鏁板籙銆
涔犳儻涓婁嬌鐢16浣嶇簿搴︼紝2鐨16嬈″籙鏄65536錛屾墍浠ヨ繖鏍瘋$畻緋繪暟錛
0.299*65536=19595.264鈮19595
0.587*65536+(0.264)=38469.632+0.264=38469.896鈮38469
0.114*65536+(0.896)=7471.104+0.896=7472
鍥涜垗浜斿叆浼氭湁杈冨ぇ鐨勮宸錛屽簲璇ュ皢浠ュ墠鐨勮$畻緇撴灉鐨勮宸涓璧瘋$畻榪涘幓錛岃垗鍏ユ柟寮忔槸鍘誨熬娉曪細
鍐欐垚琛ㄨ揪寮忔槸錛
Gray=(R*19595+G*38469+B*7472)>>16
2鑷20浣嶇簿搴︾殑緋繪暟錛
Gray=(R*1+G*2+B*1)>>2
Gray=(R*2+G*5+B*1)>>3
Gray=(R*4+G*10+B*2)>>4
Gray=(R*9+G*19+B*4)>>5
Gray=(R*19+G*37+B*8)>>6
Gray=(R*38+G*75+B*15)>>7
Gray=(R*76+G*150+B*30)>>8
Gray=(R*153+G*300+B*59)>>9
Gray=(R*306+G*601+B*117)>>10
Gray=(R*612+G*1202+B*234)>>11
Gray=(R*1224+G*2405+B*467)>>12
Gray=(R*2449+G*4809+B*934)>>13
Gray=(R*4898+G*9618+B*1868)>>14
Gray=(R*9797+G*19235+B*3736)>>15
Gray=(R*19595+G*38469+B*7472)>>16
Gray=(R*39190+G*76939+B*14943)>>17
Gray=(R*78381+G*153878+B*29885)>>18
Gray=(R*156762+G*307757+B*59769)>>19
Gray=(R*313524+G*615514+B*119538)>>20
瑙傚療涓婇潰鐨勫紡瀛愶紝榪欎簺綺懼害瀹為檯涓婃槸涓鏍風殑錛3涓4銆7涓8銆10涓11銆13涓14銆19涓20錛屾墍浠16浣嶈繍綆椾笅鏈濂界殑璁$畻鍏寮忔槸浣跨敤7浣嶇簿搴︼紝姣斿厛鍓嶉偅涓緋繪暟緙╂斁100鍊嶇殑綺懼害楂橈紝鑰屼笖閫熷害蹇錛
Gray=(R*38+G*75+B*15)>>7
鍏跺疄鏈鏈夋剰鎬濈殑榪樻槸閭d釜2浣嶇簿搴︾殑錛屽畬鍏ㄥ彲浠ョЩ浣嶄紭鍖栵細
Gray=(R+(WORD)G<<1+B)>>2
鐢變簬璇宸寰堝ぇ錛屾墍浠ュ仛鍥懼儚澶勭悊緇濅笉鐢ㄨュ叕寮忥紙鏈甯哥敤鐨勬槸16浣嶇簿搴︼級銆備絾瀵逛簬娓告垙緙栫▼
錛屽満鏅緇忓父鍙樺寲錛岀敤鎴蜂竴鑸涓嶅彲鑳借傚療鍒伴滆壊鐨勭粏寰宸鍒錛屾墍浠ユ渶甯哥敤鐨勬槸2浣嶇簿搴︺
鍙傝冭祫鏂欙細
鐧懼害鐧劇戔斺旂伆搴﹀
鐧懼害鐧劇戔斺斿浘鍍忎寒搴
『貳』 25%的灰度RGB是多少
25%的灰度RGB(25,25,25)。
灰度就是沒有色彩,RGB色彩分量全部相等。如果是一個二值灰度圖像,它的像素值只能為0或1,我們說它的灰度級為2。用個例子來說明吧:一個256級灰度的圖像,如果RGB三個量相同時,如:RGB(100,100,100)就代表灰度為100,RGB(50,50,50)代表灰度為50。
彩色圖像的灰度其實在轉化為黑白圖像後的像素值(是一種廣義的提法),轉化的方法看應用的領域而定,一般按加權的方法轉換,R, G,B 的比一般為3:6:1。
任何顏色都由紅、綠、藍三基色組成,假如原來某點的顏色為RGB(R,G,B),那麼,可以通過下面幾種方法,將其轉換為灰度:
1、浮點演算法:Gray=R*0.3+G*0.59+B*0.11
2、整數方法:Gray=(R*30+G*59+B*11)/100
3、移位方法:Gray =(R*77+G*151+B*28)>>8;
4、平均值法:Gray=(R+G+B)/3;
5、僅取綠色:Gray=G;
通過上述任一種方法求得Gray後,將原來的RGB(R,G,B)中的R,G,B統一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。
(2)gray的演算法擴展閱讀
RGB格式:
對一種顏色進行編碼的方法統稱為「顏色空間」或「色域」。用最簡單的話說,世界上任何一種顏色的「顏色空間」都可定義成一個固定的數字或變數。
RGB(紅、綠、藍)只是眾多顏色空間的一種。採用這種編碼方法,每種顏色都可用三個變數來表示-紅色綠色以及藍色的強度。記錄及顯示彩色圖像時,RGB是最常見的一種方案。
但是,它缺乏與早期黑白顯示系統的良好兼容性。因此,許多電子電器廠商普遍採用的做法是,將RGB轉換成YUV顏色空間,以維持兼容,再根據需要換回RGB格式,以便在電腦顯示器上顯示彩色圖形。
網頁格式:
由於網頁(WEB)是基於計算機瀏覽器開發的媒體,所以顏色以光學顏色RGB(紅、綠、藍)為主。網頁顏色是以16進制代碼表示,一般格式為#DEFABC (字母範圍從A-F,數字從0-9 );
如黑色,在網頁代碼中便是:#000000(在css編寫中可簡寫為#000)。當顏色代碼為#AABB11時,可以簡寫為#AB1表示,如#135與#113355表示同樣的顏色。
RGB1、RGB4、RGB8都是調色板類型的RGB格式,在描述這些媒體類型的格式細節時,通常會在BITMAPINFOHEADER數據結構後面跟著一個調色板(定義一系列顏色)。它們的圖像數據並不是真正的顏色值,而是當前像素顏色值在調色板中的索引。
以RGB1(2色點陣圖)為例,比如它的調色板中定義的兩種顏色值依次為0x000000(黑色)和0xFFFFFF(白色)…(每個像素用1位表示)表示對應各像素的顏色為:黑黑白白黑白黑白黑白白白。
『叄』 C語言 遞歸 輸出格雷碼(Gray碼)
你查網路:
一般的,普通二進制碼與格雷碼可以按以下方法互相轉換:
二進制碼->格雷碼(編碼):從最右邊一位起,依次將每一位與左邊一位異或(XOR),作為對應格雷碼該位的值,最左邊一位不變(相當於左邊是0);
格雷碼-〉二進制碼(解碼):從左邊第二位起,將每位與左邊一位解碼後的值異或,作為該位解碼後的值(最左邊一位依然不變)
如果非要按遞歸來做,可以這樣,如果要輸出n位格雷碼,那麼遞歸層為N:0層負責第0位,1層負責第1位,2層負責第2位。。。。第n-1層負責第n-1位(也就是gray的最高位)這樣就可以寫出遞歸函數的輪廓了。
void gray(int n)
{
if(0==n)
{……;return;}
……
gray(n-1);//把處理第n-1位的任務交下一層處理
}
對於第0位來說,每4位為一個循環周期——01 10.
對於第1位來說,每8位為一個循環周期——0011 1100.
對於第2位來說,每16位為一個循環周期——00001111 11110000.
……
對於第N位來說,每2^(N+2)為一個循環周期。
看到這里你有什麼啟發?
所以我想你應該設置一個全局變數:int flag=1.
對於gray(i)函數來說,可以通過set=flag%(2^(i+2))來設置該第位(當2^i<set&&set<=3*2^i,就設第i位為1)
『肆』 像素值和灰度值分別指什麼
像素值指的是:稿圖像被數字化時由計算機賦予的值,它代表了原稿某一小方塊的平均亮度信息,或者說是該小方塊的平均反射(透射) 密度信息。在將數字圖像轉化為網目調圖像時,網點面積率 與數字圖像的像素值 有直接的關系,即網點以其大小表示原稿某一小方塊的平均亮度信息;
灰度值指的是:在計算機領域中,灰度(Gray scale)數字圖像是每個像素只有一個采樣顏色的圖像。這類圖像通常顯示為從最暗黑色到最亮的白色的灰度,盡管理論上這個采樣可以任何顏色的不同深淺,甚至可以是不同亮度上的不同顏色。
(4)gray的演算法擴展閱讀:
任何顏色都由紅、綠、藍三基色組成,假如原來某點的顏色為RGB(R,G,B),那麼,我們可以通過下面幾種演算法,將其轉換為灰度:
1.浮點演算法:Gray=R*0.3+G*0.59+B*0.11
2.整數方法:Gray=(R*30+G*59+B*11)/100
3.移位方法:Gray =(R*77+G*151+B*28)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.僅取綠色:Gray=G;
參考資料來源:網路-灰度值
參考資料來源:網路-像素值