一種消除圖像鋸齒的方法及裝置制造方法
【專利摘要】本發(fā)明涉及圖像處理【技術(shù)領(lǐng)域】,尤其涉及一種消除圖像鋸齒的方法及裝置,該方法包括:加載圖像所有像素的顏色值到像素數(shù)組中;計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊緣像素偏移量;根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰度通道做透明處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中;將賦值后的像素數(shù)組設(shè)置到所述圖像中,得到消除鋸齒后的圖像,本發(fā)明通過Android中像素數(shù)組的像素操作,對特定位的像素顏色執(zhí)行高位透明處理,克服了需要動態(tài)獲取圖片而又采用了硬件加速場合下圖像鋸齒難以消除的問題,且消除邊緣鋸齒效果明顯。
【專利說明】一種消除圖像鋸齒的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖像處理【技術(shù)領(lǐng)域】,尤其涉及一種消除圖像鋸齒的方法及裝置。
【背景技術(shù)】
[0002] 在Android繪圖中,有兩種消除圖像鋸齒的方法,分別是給Paint或 Canvas加上抗鋸齒標(biāo) 志:paint. setAntiAlias (true)和 canvas. setDrawFilter (new PaintFlagsDrawFilter (0, Paint. ANTI_ALIAS_FLAG I Paint. FILTER_BITMAP_FLAG)),但現(xiàn) 在很多應(yīng)用程序為了提高性能都會開啟硬件加速,此時這兩種方法就不能消除圖像鋸齒, 對于旋轉(zhuǎn)或縮放圖片導(dǎo)致的鋸齒,大多數(shù)是讓美工手動修改圖片,將圖片的邊緣部分做一 定的透明處理來避免鋸齒,但對于動態(tài)獲取的圖片就無法消除圖像鋸齒。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于提出一種消除圖像鋸齒的方法及裝置,對特定位的像素顏色執(zhí) 行高位透明處理,克服了需要動態(tài)獲取圖片而又采用了硬件加速場合下圖像鋸齒難以消除 的問題,且消除邊緣鋸齒效果明顯。
[0004] 為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
[0005] -種消除圖像鋸齒的方法,包括:
[0006] 步驟110、加載圖像所有像素的顏色值到像素數(shù)組中;
[0007] 步驟120、計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊緣像素偏移量;
[0008] 步驟130、根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰度通道做 透明處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中;
[0009] 步驟140、將賦值后的像素數(shù)組設(shè)置到所述圖像中,得到消除鋸齒后的圖像。
[0010] 其中,所述像素數(shù)組是一個包含所述圖像的寬度和高度的二維矩陣。
[0011] 其中,所述步驟130具體包括:
[0012] 步驟131、根據(jù)所述像素數(shù)組和邊緣像素偏移量得到邊緣像素顏色值;
[0013] 步驟132、將所述邊緣像素顏色值的灰度通道做與零處理,其中所述灰度通道為邊 緣像素顏色值的最高位字節(jié);
[0014] 步驟133、將處理后邊緣像素顏色值賦值到所述像素數(shù)組中對應(yīng)的元素。
[0015] 其中,所述步驟110具體為:采用Andriod的Bitmap類中的getpixels接口函數(shù) 將圖像所有像素的顏色值加載到像素數(shù)組pixels中,所述像素數(shù)組pixels為4字節(jié)的整 型數(shù)組。
[0016] 其中,所述步驟120具體包括:
[0017] 步驟121、從第i行開始掃描,其中,0彡i彡h-1,h為像素數(shù)組的高度;
[0018] 步驟122、判斷i是否大于h-Ι,若是,則結(jié)束掃描;
[0019] 步驟123、若i彡h-Ι,判斷i是否大于等于預(yù)設(shè)的邊緣寬度e且小于h-e,若是,則 i+Ι,返回步驟121,若否,則進(jìn)入步驟124 ;
[0020] 步驟124、從第j列開始掃描,其中,0 < j < W-1,W為像素數(shù)組的寬度;
[0021] 步驟125、判斷j是否大于w-1,若是,則i+Ι,返回步驟121,若否,則進(jìn)入步驟126 ;
[0022] 步驟126、判斷j是否大于等于預(yù)設(shè)的邊緣寬度e且小于w-e,若是,則j+Ι,返回步 驟124,若否,則進(jìn)入步驟127;
[0023] 步驟127、計算該第i行j列的邊緣像素偏移量offset = j+i*w ;
[0024] 步驟128、重復(fù)步驟124到127掃描完整個第i行;
[0025] 步驟129、重復(fù)以上步驟直至計算出所有邊緣像素偏移量。
[0026] 一種消除圖像鋸齒的裝置,包括:
[0027] 像素加載單元,用于加載圖像所有像素的顏色值到像素數(shù)組中;
[0028] 計算單元,用于計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊緣像素偏 移量;
[0029] 透明處理單元,用于根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰 度通道做透明處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中;
[0030] 消除鋸齒單元,用于將賦值后的像素數(shù)組設(shè)置到所述圖像中,得到消除鋸齒后的 圖像。
[0031] 其中,所述像素數(shù)組是一個包含所述圖像的寬度和高度的二維矩陣。
[0032] 其中,所述透明處理單元具體包括:
[0033] 邊緣像素顏色值計算模塊,用于根據(jù)所述像素數(shù)組和邊緣像素偏移量得到邊緣像 素顏色值;
[0034] 與零處理模塊,用于將所述邊緣像素顏色值的灰度通道做與零處理,其中所述灰 度通道為邊緣像素顏色值的最高位字節(jié);
[0035] 賦值模塊,用于將處理后邊緣像素顏色值賦值到所述像素數(shù)組中對應(yīng)的元素。
[0036] 其中,所述像素加載單元的工作流程具體為:采用Andriod的Bitmap類中的 getpixels接口函數(shù)將圖像所有像素的顏色值加載到像素數(shù)組pixels中,所述像素數(shù)組 pixels為4字節(jié)的整型數(shù)組。
[0037] 其中,所述計算單元的工作流程具體包括:
[0038] 步驟121、從第i行開始掃描,其中,0彡i彡h-1,h為像素數(shù)組的高度;
[0039] 步驟122、判斷i是否大于h-Ι,若是,則結(jié)束掃描;
[0040] 步驟123、若i彡h-Ι,判斷i是否大于等于預(yù)設(shè)的邊緣寬度e且小于h-e,若是,則 i+Ι,返回步驟121,若否,則進(jìn)入步驟124 ;
[0041] 步驟124、從第j列開始掃描,其中,0 < j < w-1,w為像素數(shù)組的寬度;
[0042] 步驟125、判斷j是否大于W-1,若是,則i+1,返回步驟121,若否,則進(jìn)入步驟126 ;
[0043] 步驟126、判斷j是否大于等于預(yù)設(shè)的邊緣寬度e且小于w-e,若是,則j+Ι,返回步 驟124,若否,則進(jìn)入步驟127;
[0044] 步驟127、計算該第i行j列的邊緣像素偏移量offset = j+i*w ;
[0045] 步驟128、重復(fù)步驟124到127掃描完整個第i行;
[0046] 步驟129、重復(fù)以上步驟直至計算出所有邊緣像素偏移量。
[0047] 本發(fā)明的有益效果為:一種消除圖像鋸齒的方法及裝置,該方法包括:加載圖像 所有像素的顏色值到像素數(shù)組中;計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊 緣像素偏移量;根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰度通道做透明 處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中;將賦值后的像素數(shù)組 設(shè)置到所述圖像中,得到消除鋸齒后的圖像,本發(fā)明通過Android中像素數(shù)組的像素操作, 對特定位的像素顏色執(zhí)行高位透明處理,克服了需要動態(tài)獲取圖片而又采用了硬件加速場 合下圖像鋸齒難以消除的問題,且消除邊緣鋸齒效果明顯。
【專利附圖】
【附圖說明】
[0048] 圖1是本發(fā)明實施例一提供的一種消除圖像鋸齒的方法流程圖。
[0049] 圖2是本發(fā)明實施例一提供的邊緣像素偏移量計算方法流程圖。
[0050] 圖3是本發(fā)明實施例二提供的一種消除圖像鋸齒的裝置結(jié)構(gòu)圖。
【具體實施方式】
[0051] 下面結(jié)合圖1-圖3并通過【具體實施方式】來進(jìn)一步說明本發(fā)明的技術(shù)方案。
[0052] 實施例一
[0053] 圖1是本發(fā)明實施例一提供的一種消除圖像鋸齒的方法流程圖。
[0054] -種消除圖像鋸齒的方法,包括:
[0055] 步驟110、加載圖像所有像素的顏色值到像素數(shù)組中;
[0056] 步驟120、計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊緣像素偏移量;
[0057] 步驟130、根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰度通道做 透明處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中;
[0058] 步驟140、將賦值后的像素數(shù)組設(shè)置到所述圖像中,得到消除鋸齒后的圖像。
[0059] 在本實施例中,通過Android中像素數(shù)組pixels的像素操作,對特定位的像素顏 色執(zhí)行高位透明處理,克服了需要動態(tài)獲取圖片而又采用了硬件加速場合下圖像鋸齒難以 消除的問題,且消除邊緣鋸齒效果明顯。
[0060] 在本實施例中,所述步驟110具體為:采用Andriod的Bitmap類中的getpixels 接口函數(shù)將圖像所有像素的顏色值加載到像素數(shù)組pixels中,所述像素數(shù)組pixels為4 字節(jié)的整型數(shù)組。
[0061] 在本實施例中,加載所有像素的顏色到像素數(shù)組pixels中的接口函數(shù)為:
[0062] b. getPixels (pixels, 0, w, 0, 0, w, h),其中,b 是 bitmap 類型的對象,w 為圖像的寬 度,h為圖像的高度。
[0063] 在本實施例中,所述像素數(shù)組是一個包含所述圖像的寬度和高度的二維矩陣w*h。
[0064] 在本實施例中,將賦值后的像素數(shù)組設(shè)置到所述圖像中所用到的接口函數(shù)為:b. s etPixels (pixels, 0, w, 0, 0, w, h) 〇
[0065] 在本實施例中,所述步驟130具體包括:
[0066] 步驟131、根據(jù)所述像素數(shù)組和邊緣像素偏移量得到邊緣像素顏色值;
[0067] 步驟132、將所述邊緣像素顏色值的灰度通道做與零處理,其中所述灰度通道為邊 緣像素顏色值的最高位字節(jié);
[0068] 步驟133、將處理后邊緣像素顏色值賦值到所述像素數(shù)組中對應(yīng)的元素。
[0069] 如圖2所示,在本實施例中,所述步驟120具體包括:
[0070] 步驟121、從第i行開始掃描,其中,0彡i彡h-1,h為像素數(shù)組的高度;
[0071] 步驟122、判斷i是否大于h-Ι,若是,則結(jié)束掃描;
[0072] 步驟123、若i彡h-Ι,判斷i是否大于等于預(yù)設(shè)的邊緣寬度e且小于h-e,若是,則 i+Ι,返回步驟121,若否,則進(jìn)入步驟124 ;
[0073] 步驟124、從第j列開始掃描,其中,0 < j < w-1,w為像素數(shù)組的寬度;
[0074] 步驟125、判斷j是否大于W-1,若是,則i+1,返回步驟121,若否,則進(jìn)入步驟126 ;
[0075] 步驟126、判斷j是否大于等于預(yù)設(shè)的邊緣寬度e且小于w-e,若是,則j+Ι,返回步 驟124,若否,則進(jìn)入步驟127;
[0076] 步驟127、計算該第i行j列的邊緣像素偏移量offset = j+i*w ;
[0077] 步驟128、重復(fù)步驟124到127掃描完整個第i行;
[0078] 步驟129、重復(fù)以上步驟直至計算出所有邊緣像素偏移量。
[0079] 在本實施例中,計算邊緣像素偏移量的偽代碼為:
【權(quán)利要求】
1. 一種消除圖像銀齒的方法,其特征在于,包括: 步驟110、加載圖像所有像素的顏色值到像素數(shù)組中; 步驟120、計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊緣像素偏移量; 步驟130、根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰度通道做透明 處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中; 步驟140、將賦值后的像素數(shù)組設(shè)置到所述圖像中,得到消除銀齒后的圖像。
2. 根據(jù)權(quán)利要求1所述的一種消除圖像銀齒的方法,其特征在于,所述像素數(shù)組是一 個包含所述圖像的寬度和高度的二維矩陣。
3. 根據(jù)權(quán)利要求1所述的一種消除圖像銀齒的方法,其特征在于,所述步驟130具體包 括: 步驟131、根據(jù)所述像素數(shù)組和邊緣像素偏移量得到邊緣像素顏色值; 步驟132、將所述邊緣像素顏色值的灰度通道做與零處理,其中所述灰度通道為邊緣像 素顏色值的最高位字節(jié); 步驟133、將處理后邊緣像素顏色值賦值到所述像素數(shù)組中對應(yīng)的元素。
4. 根據(jù)權(quán)利要求1所述的一種消除圖像銀齒的方法,其特征在于,所述步驟110具體 為;采用An化iod的Bitmap類中的ge化ixels接口函數(shù)將圖像所有像素的顏色值加載到像 素數(shù)組pixels中,所述像素數(shù)組pixels為4字節(jié)的整型數(shù)組。
5. 根據(jù)權(quán)利要求2所述的一種消除圖像銀齒的方法,其特征在于,所述步驟120具體包 括: 步驟121、從第i行開始掃描,其中,0《i《h-1,h為像素數(shù)組的高度; 步驟122、判斷i是否大于h-1,若是,則結(jié)束掃描; 步驟123、若i《h-1,判斷i是否大于等于預(yù)設(shè)的邊緣寬度e且小于h-e,若是,則i+1, 返回步驟121,若否,則進(jìn)入步驟124 ; 步驟124、從第j列開始掃描,其中,0《j《W-1,W為像素數(shù)組的寬度; 步驟125、判斷j是否大于W-1,若是,則i+1,返回步驟121,若否,則進(jìn)入步驟126 ; 步驟126、判斷j是否大于等于預(yù)設(shè)的邊緣寬度e且小于w-e,若是,則j+1,返回步驟 124,若否,則進(jìn)入步驟127 ; 步驟127、計算該第i行j列的邊緣像素偏移量offset = j+i*w ; 步驟128、重復(fù)步驟124至Ij 127掃描完整個第i行; 步驟129、重復(fù)W上步驟直至計算出所有邊緣像素偏移量。
6. -種消除圖像銀齒的裝置,其特征在于,包括: 像素加載單元,用于加載圖像所有像素的顏色值到像素數(shù)組中; 計算單元,用于計算圖像四周邊緣的原始像素內(nèi)存地址偏移量,得到邊緣像素偏移 量; 透明處理單元,用于根據(jù)所述像素數(shù)組和邊緣像素偏移量對邊緣像素顏色值的灰度通 道做透明處理,得到處理后的邊緣像素顏色值結(jié)果并賦值到所述像素數(shù)組中; 消除銀齒單元,用于將賦值后的像素數(shù)組設(shè)置到所述圖像中,得到消除銀齒后的圖像。
7. 根據(jù)權(quán)利要求6所述的一種消除圖像銀齒的裝置,其特征在于,所述像素數(shù)組是一 個包含所述圖像的寬度和高度的二維矩陣。
8. 根據(jù)權(quán)利要求6所述的一種消除圖像銀齒的裝置,其特征在于,所述透明處理單元 具體包括: 邊緣像素顏色值計算模塊,用于根據(jù)所述像素數(shù)組和邊緣像素偏移量得到邊緣像素顏 色值; 與零處理模塊,用于將所述邊緣像素顏色值的灰度通道做與零處理,其中所述灰度通 道為邊緣像素顏色值的最高位字節(jié); 賦值模塊,用于將處理后邊緣像素顏色值賦值到所述像素數(shù)組中對應(yīng)的元素。
9. 根據(jù)權(quán)利要求6所述的一種消除圖像銀齒的裝置,其特征在于,所述像素加載單元 的工作流程具體為;采用An化iod的Bitmap類中的ge化ixels接口函數(shù)將圖像所有像素的 顏色值加載到像素數(shù)組pixels中,所述像素數(shù)組pixels為4字節(jié)的整型數(shù)組。
10. 根據(jù)權(quán)利要求7所述的一種消除圖像銀齒的裝置,其特征在于,所述計算單元的工 作流程具體包括: 步驟121、從第i行開始掃描,其中,0《i《h-1,h為像素數(shù)組的高度; 步驟122、判斷i是否大于h-1,若是,則結(jié)束掃描; 步驟123、若i《h-1,判斷i是否大于等于預(yù)設(shè)的邊緣寬度e且小于h-e,若是,則i+1, 返回步驟121,若否,則進(jìn)入步驟124 ; 步驟124、從第j列開始掃描,其中,0《j《W-1,W為像素數(shù)組的寬度; 步驟125、判斷j是否大于W-1,若是,則i+1,返回步驟121,若否,則進(jìn)入步驟126 ; 步驟126、判斷j是否大于等于預(yù)設(shè)的邊緣寬度e且小于w-e,若是,則j+1,返回步驟 124,若否,則進(jìn)入步驟127 ; 步驟127、計算該第i行j列的邊緣像素偏移量offset = j+i*w ; 步驟128、重復(fù)步驟124至Ij 127掃描完整個第i行; 步驟129、重復(fù)W上步驟直至計算出所有邊緣像素偏移量。
【文檔編號】G06T5/00GK104463803SQ201410766422
【公開日】2015年3月25日 申請日期:2014年12月11日 優(yōu)先權(quán)日:2014年12月11日
【發(fā)明者】吳奇志 申請人:上海卓悠網(wǎng)絡(luò)科技有限公司