999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AS3.0的位圖置換圖圖像濾鏡應用研究

2015-04-29 23:57:57謝建華
智能計算機與應用 2015年3期
關鍵詞:效果

謝建華

摘 要:通過Flash ActionScript3.0的flash.filters包中各種濾鏡類可以實現對圖像的濾鏡處理,其中DisplacementMapFilter 類可實現對位圖的置換圖濾鏡效果,本文在研究置換圖工作原理和濾鏡工作原理的基礎上,應用AS3.0程序開發語言實現對圖像的置換左移和扭曲效果處理,是圖像處理的一種新嘗試,程序開發人員通過編寫代碼實現專業圖像處理軟件實現的功能,為圖像處理開辟了一條新的途徑和方式。

關鍵詞:AS3.0;置換圖;濾鏡;工作原理

中圖分類號:TP391 文獻標識碼:A 文章編號:2095-2163(2015)03-

Research on Displacement Map Filter Application of Bitmap based on AS3.0

XIE JianHua

(Guangzhou Panyu Polytechnic,Guangzhou 511483,China)

Abstract: The flash filters package contains a lots of filter classes, with which the image processing can be accomplished, Displacement Map Filter class can be used to achieve filter effects. The operational principle of displacemap and filter are presented, programmers can use AS3.0 to achieve some filter effects, such as ,bitmap shift left, bitmap distortion, and so on. This method is a new attempt for image processing. Programmers can achieve the same functions by programming as using the professional image tools, so it is a new way for image processing.

Key Words: ActionScript 3.0; DisplacementMap; Filter; Operational Principle

0 引 言

位圖是使用像素陣列來表示的圖像,每個像素的顏色信息可由RGB組合或者灰度值來分析和表示[1]。以往,一般用戶多是利用專業圖像編輯軟件Adobe Photoshop或 Adobe Fireworks實現對位圖圖像的應用濾鏡效果,而Flash ActionScript 3.0 擁有flash.filters 包,且包含著一系列位圖效果濾鏡類,因而允許開發人員以編程方式對位圖應用濾鏡并顯示對象,以達到雨圖形處理應用程序中許多效果相同的定制技術呈現。基于此,本文將運用Flash開發語言實現對位圖的置換圖濾鏡效果應用。

1 理論原理

1.1置換圖工作原理

置換圖決定了目標對象中像素移動的距離和方向如圖1所示,這是根據圖片中的灰度值來實現的。

圖1 置換圖制作原理

Fig. 1 Principle of replacement map

置換濾鏡基本算法可以簡單描述為:

F(x,y)=I(x+△x,y+△y) (1)

而且,△x=

其中,I為原圖,G為置換圖,F為置換結果,Kx為水平方向比例,xmax和xmin分別為選區外接矩形的邊界。%表示余數運算。

在此 ,給出置換濾鏡基本算法的實現要點概述如下:

(1)“置換”濾鏡使用置換圖中的顏色值(指定通道的灰度值)改變選區(像素的移動),其中0 是負向最大改變值,255 是正向最大改變值,灰度值 128 不產生置換。

(2)如果置換圖只有一個通道,圖像則沿著由水平比例和垂直比例所定義的對角線改變像素的移動[2]。如果置換圖有多個通道,第一個通道則會控制水平方向像素的置換,第二個通道將控制垂直方向像素的置換。

(3)當水平比例和垂直比例都設置為100% 時,最多置換128個像素(因為中間的灰色不生成置換)。

(4)使用名為置換圖的圖像確定如何扭曲選區的像素。

對于簡單的置換圖來說,亮色處的像素向左上方移動,當顏色為純白色時,移動距離最大,為128像素。中性色(50%灰色)處的像素保持原位置不變。暗色處的像素向右下方移動,當顏色為純黑色時,移動距離最大,為128像素。介于白色與黑色之間的顏色分別描述了使像素移動的相應距離。特別指出的是,這幅簡單的置換圖必須是灰度模式,如圖2所示。

圖2 簡單置換圖

Fig. 2 Simple replacement map

對于復雜的置換圖來說,像素的移動方向和距離將取決于紅色和綠色通道的亮度值。具體來說,在紅色通道中,白色處的像素將左移,黑色處的像素將右移;在綠色通道中,白色處的像素將上移,黑色處的像素將下移。而藍色通道則不起作用。移動的距離和簡單置換圖中原理相似。但仍需指出的是,復雜的置換圖必須是RGB模式,如圖3所示。

圖3 復雜置換圖

Fig.3 complex replacement map

1.2 濾鏡的工作原理

AS 3.0中,顯示對象過濾是通過將原始對象的副本緩存為透明位圖而展開其工作的。

將濾鏡應用于顯示對象后,只要對象中附帶有效的濾鏡列表,Adobe Flash Player 或 Adobe AIR 就會將該對象緩存為位圖。而后,此位圖將成為所有后續應用的濾鏡效果的原始圖像。

通常,每個顯示對象包含兩個位圖:一個包含原始未過濾的源顯示對象,另一個用于過濾后的最終圖像。呈現時使用最終圖像。只要顯示對象不發生更改,最終圖像就不需要更新[3]。

AS 3.0中的DisplacementMapFilter 類使用BitmapData對象(稱為置換圖圖像)的像素值在新對象上執行置換效果。一般情況下,置換圖圖像與將要應用濾鏡的實際顯示對象或 BitmapData實例均有一定不同。置換效果包括針對過濾后圖像中像素的置換,即讓這些像素離開各自原始位置一定距離。也就是,此濾鏡可用于產生移位、扭曲或斑點效果。

此濾鏡功能實現可使用以下公式[3-4]:

dstPixel[x, y] = srcPixel[x + ((componentX(x, y) - 128) * scaleX) / 256, y + ((componentY(x, y) - 128) *scaleY) / 256)(2)

其中,componentX(x, y)從mapBitmap屬性獲得(x-mapPoint.x ,y-mapPoint.y)處的 componentX 屬性顏色值。

濾鏡使用的映射圖像會進行縮放,以匹配舞臺縮放比例。當對象自身呈一定的比例時,卻不會進行縮放。濾鏡支持舞臺縮放。但不支持常規縮放、旋轉和傾斜。如果對象本身進行了縮放(如果將 scaleX 和 scaleY 屬性設置為除1.0以外的其它值),濾鏡效果將不執行縮放。只有用戶在舞臺上進行放大時,才會有縮放的發生和出現。

應用于給定像素的置換位置和置換量可由置換圖圖像的顏色值設計和確定。使用濾鏡時,除了指定置換圖圖像外,還要指定如下各值,以利于操控置換圖圖像中計算置換的具體方式:

(1)映射點。過濾圖像上的位置,在該點將應用置換濾鏡的左上角。如果只想對圖像的一部分應用濾鏡,可以使用此值。

(2)X 組件。影響像素的 x 位置的置換圖圖像的顏色通道。

(3)Y 組件。影響像素的 y 位置的置換圖圖像的顏色通道。

(4)X 縮放比例。指定 x 軸置換強度的乘數值。

(5)Y 縮放比例。指定 y 軸置換強度的乘數值。

(6)濾鏡模式:確定在移開像素后形成的空白區域中,Flash Player 或 AIR 應執行何種操作。在DisplacementMapFilterMode 類中定義為常量的選項可以顯示原始像素(濾鏡模式 IGNORE)、從圖像的另一側環繞像素(濾鏡模式 WRAP,為默認設置)、使用最近的移位像素(濾鏡模式 CLAMP)或用顏色填充空間(濾鏡模式COLOR)。

2 應用與分析

2.1 水平移位

在以下代碼中,將加載一個圖像,如圖4所示。完成加載后使圖像在舞臺上居中并對它應用置換圖濾鏡,使整個圖像中的像素向左水平移位,置換后效果如圖5所示。

// 加載圖像

var loader:Loader = new Loader();

loader.load(new URLRequest("images/image.jpg"));

this.addChild(loader);

var mapImage:BitmapData;

var displacementMap:DisplacementMapFilter;

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, setupStage);

// 圖像加載完成調用該函數

function setupStage(event:Event):void

{

//圖像居中

loader.x = (stage.stageWidth - loader.width) / 2;

loader.y = (stage.stageHeight - loader.height) / 2;

// 創建置換圖像

mapImage = new BitmapData(loader.width, loader.height, false, 0xFF0000);

// 創建置換濾鏡

displacementMap = new DisplacementMapFilter();

displacementMap.mapBitmap = mapImage;

displacementMap.mapPoint = new Point(0, 0);

displacementMap.componentX = BitmapDataChannel.RED;

displacementMap.scaleX = 250;

loader.filters = [displacementMap];

}

用于定義置換的屬性有:

(1)置換圖位圖。置換位圖是由代碼創建的新的 BitmapData 實例。具體尺寸與加載的圖像的尺寸匹配(因此會將置換應用于整個圖像)。用純紅色像素填充此實例。

(2)映射點。將此值設置為點 (0, 0),使置換再次應用于整個圖像。

(3)X 組件。此值設置為常量 BitmapDataChannel.RED,表示置換圖位圖的紅色值將決定沿著 x 軸置換像素的程度(像素的移動程度)。

(4)X 縮放比例。此值設置為 250。由于全部置換量(與全紅的置換圖圖像的距離)僅使圖像置換很小的量(大約為一個像素的一半)。這就使得,如果將此值設置為 1,圖像只會水平移動 0.5個像素;而將此值設置為 250,圖像將移動大約 125個像素。

圖4 原始網格圖(image.jpg) 圖5 置換后左移效果圖

Fig.4 Original girds Fig.5 Result of left shift

這些設置可使過濾圖像的像素向左移動 250個像素。移動的方向(向左或向右)和移動量則取決于置換圖圖像中的像素的顏色值。由實施概念而言,Flash Player 或 AIR 會逐一處理過濾圖像的像素(至少處理將應用濾鏡的區域中的像素,在本例中指所有像素),并對每個像素執行以下操作:

(1)Flash Player在置換圖圖像中查找相應的像素。例如,當 Flash Player 或 AIR 計算過濾圖像左上角像素的置換量時,就會在置換圖圖像左上角中查找像素。

(2)Flash Player確定置換圖像素中指定顏色通道的值。在本例中,x組件顏色通道是紅色通道,因此Flash Player和AIR將查看置換圖圖像中該像素所在位置處的紅色通道的對應值。由于置換圖圖像是純紅色的,即使得像素的紅色通道為0xFF(即255)。該值將用作置換值。

(3)比較置換值和“中間”值(127,這是0和255之間的中間值)。如果置換值低于中間值,則像素正向移位(x置換向右;y置換向下)。而如果置換值高于中間值(如本示例),則像素負向移位(x置換向左;y置換向上)。為更精確起見,Flash Player和AIR 會從127中減去置換值,結果(正或負)即是應用的相對置換量。

(4)獲得相對置換量的應用結果后,Flash Player 通過確定相對置換值所表示的完全置換量的百分比來給出實際置換量。在本例中,全紅色意味著 100%置換。然后用 x 縮放比例值或 y 縮放比例值乘以該百分比,以確定將應用的置換像素數。具體來說就是,100% 乘以250將可確定置換量(大約為向左移動 125個像素)。

因為沒有為y分量和y縮放比例指定值,此處將使用默認值(不發生置換),這就是圖像在垂直方向不移位的原因。

在本示例中使用了默認濾鏡模式設置 WRAP,當像素向左移位時,將會利用移到圖像左邊緣以外的像素來填充右側空白區域。

2.2 扭曲涂抹效果

步驟1: 制作如圖6、7、8所示的三個元件。

Fig.6 Red circle Fig.7 blue circle

其中,紅圓線性填充紅色255-0;藍圓線性填充藍色255-0,再旋轉90度。

結果:上部分藍色255,下部分藍色0。背景圖為黃黑相間的斑狀矩形,其注冊點在左上角,命名為Background。

圖8 背景矩形元件

Fig.8 Background with a rectangle

步驟2:利用兩個圓創建一個影片剪輯(注意,注冊點在左上角,上面圖層的元件預設混合模式為add)。剪輯后效果如圖9所示。

圖9 影片剪輯

Fig.9 MovieClip

步驟3:再次繪制一個元件,如圖10所示。

圖10 帶圓的矩形元件

Fig.10 retangle with a circle

其中,矩形部分用#808080填充(三個分量都是128),大小與前面的背景矩形相同;而中間的灰圓大小與紅、綠圓相同,并進行放射性填充;三處的顏色均為808080,但alpha卻不一樣。具體地,左、中、右的alpha分別為0%、55%、100%

步驟4:將(2)、(3)步再合并為一個元件,效果如圖11所示。

圖11 合并產生的新元件

Fig.11 result of merge

其中,在圖層最上面是灰圓,中間是紅綠圓,最下是灰矩形。這樣,圓的邊緣部分即帶有羽化效果。將這個元件命名為Displacer。

步驟5:編寫代碼,測試得出結果[5-6]。

var channel1:Number = 1; //選紅色通道來計算X方向的偏移量

var channel2:Number = 4; //選藍色通道來計算X方向的偏移量

var xMultiplier :Number= 30; //x方向的放大系數

var yMultiplier:Number = 30; // x方向的放大系數

var mode:String = "clamp";

var offset:Point = new Point(0, 0);

var bmp:BitmapData = new BitmapData(502, 302);

bmp.draw(Displacer);

var displacementMapFilter:DisplacementMapFilter = new DisplacementMapFilter(bmp, offset, channel1, channel2, xMultiplier, yMultiplier, mode)

Background.filters = [displacementMapFilter];

執行代碼,效果如圖12所示。

圖12 最終扭曲涂抹效果圖

Fig.12 Final result of clamp mode

3結束語

通過AS3.0的flash.filters包,使得程序開發者利用編程即可實現與用戶使用專業的圖像處理軟件,如Photoshop一樣的圖片濾鏡處理效果,也就是利用BitmapData類和DisplacementMapFilter類可實現對位圖的置換圖濾鏡應用。程序設計人員通過對該類程序的開發實現了對位圖圖像的移位、扭曲或斑點效果,一并也完成了顯示對象的生動呈現,從而為圖像處理提供了一種新的操作模式及執行方式。本文僅以DisplacementMapFilter類為例,其程序開發方法完全可以拓展到flash.filters包中其他濾鏡類,以處理圖像的不同濾鏡效果。

參考文獻:

[1] 劉菲,孟祥增.Flash動畫的內容特征分析與圖像信息提取研究[J].現代教育技術,2009 ,19(12):91-94.

[2] 趙亮,何振林.Photoshop“置換濾鏡”的探析[J].科技資訊.2006(22) :90.

[3] 康彬,朱衛平.一種基于壓縮感知的圖像去馬賽克算法[J],南京郵電大學學報(自然科學版),2014,34(4):39-43.

[4] AGHAGOLZADEH M,MOGHADAM A A,KUMAR M,et al. Bayer and panchromatic color filter array demosaicing by sparse recovery[J]. SPIE Proceedings, 2011,78: 1- 11.

[5] 朱治國,繆亮,陳艷麗.Flash ActionScript 3.0 編程技術教程[M].北京: 清華大學出版社,2008.

[6]李天培,王文憑,孫少斌. 基于ActionScript 3.0的行走動作模擬[J]. 自動化技術與應用, 2010,29(08):30-32.

猜你喜歡
效果
按摩效果確有理論依據
保濕噴霧大測評!效果最驚艷的才20塊!
好日子(2021年8期)2021-11-04 09:02:46
笑吧
迅速制造慢門虛化效果
創造逼真的長曝光虛化效果
四種去色效果超越傳統黑白照
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
期末怎樣復習效果好
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
3D—DSA與3D—CTA成像在顱內動脈瘤早期診斷中的應用效果比較
主站蜘蛛池模板: 欧美在线网| 亚洲AV无码乱码在线观看代蜜桃 | A级全黄试看30分钟小视频| 国产一级妓女av网站| 永久毛片在线播| 在线观看亚洲精品福利片| 五月天婷婷网亚洲综合在线| 青草午夜精品视频在线观看| 色婷婷久久| 欧美一区中文字幕| 亚洲动漫h| 欧美成人一级| 四虎永久在线精品国产免费| 中文字幕无码中文字幕有码在线| 国产主播在线观看| 久久成人免费| 亚洲综合片| 在线观看免费AV网| 青草免费在线观看| 成色7777精品在线| 精品一区国产精品| 人人爽人人爽人人片| 欧洲免费精品视频在线| 欧美在线精品怡红院| 国产免费黄| 丰满少妇αⅴ无码区| 老司国产精品视频91| 青青草欧美| 白丝美女办公室高潮喷水视频 | 久久一本精品久久久ー99| 日韩在线第三页| 欧美性久久久久| 久久综合丝袜长腿丝袜| 亚洲日本www| 一级黄色网站在线免费看| 国产高颜值露脸在线观看| 国产91精选在线观看| 亚洲欧美色中文字幕| 欧美激情第一欧美在线| 国产视频a| 美女视频黄频a免费高清不卡| 五月综合色婷婷| 国产精品一区在线麻豆| 日韩无码黄色| 国产乱论视频| 欧美日韩中文国产| 激情乱人伦| 农村乱人伦一区二区| 国产探花在线视频| 亚洲黄色高清| 亚洲乱码在线视频| 成人免费网站在线观看| 亚洲成人精品久久| 婷婷六月激情综合一区| 喷潮白浆直流在线播放| 欧洲日本亚洲中文字幕| 国产精品色婷婷在线观看| 国产一级在线播放| 亚洲国产欧洲精品路线久久| 国产在线高清一级毛片| 第一页亚洲| 精品国产一区二区三区在线观看| 午夜福利网址| 欧美国产综合色视频| 免费啪啪网址| 久久久久夜色精品波多野结衣| AV熟女乱| 亚洲人成人伊人成综合网无码| 狠狠色狠狠色综合久久第一次| 三区在线视频| 青青草原国产av福利网站| 亚洲清纯自偷自拍另类专区| 毛片久久网站小视频| 一区二区午夜| 无码中文字幕精品推荐| 无码人中文字幕| 在线日本国产成人免费的| 狠狠色婷婷丁香综合久久韩国| 热99re99首页精品亚洲五月天| 亚洲欧洲日产国产无码AV| 国产va在线| 国产在线98福利播放视频免费|