0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Alpha半透明圖形疊加算法Matlab+Verilog的設計實現(xiàn)

FPGA之家 ? 來源:FPGA之家 ? 2024-05-01 10:28 ? 次閱讀

Alpha算法的研究

Alpha通道是一個8位的灰度通道,該通道用256級灰度來記錄圖像中的透明度信息,定義透明、不透明和半透明區(qū)域,其中黑表示全透明,白表示不透明,灰表示半透明[15]。

半透明混合算法目前在常用到的算法是AlphaBlend。其算法如下:假設一幅圖象是A,另一幅透明的圖象是B,那么透過B去看A,看上去的圖象C就是B和A的混合圖象,設B圖象的透明度為alpha(取值為0-1,1為完全透明,0為完全不透明)。Alpha每個通道色彩混合公式如下:

7e00cc84-0116-11ef-a297-92fbcf53809c.png

R(x)、G(x)、B(x)分別指顏色x的RGB分量原色值。從上面的公式可以知道,Alpha其實是一個決定混合透明度的數(shù)值。改變這個 alpha 值可以得到一個漸變的效果。分離RGB色用"位與"、"移位"運算的方法。

透明的比例按2的N次冪來分級,這樣可以快速運算。如果是按256級Alpha = 1/256,B圖的權(quán)重 = (256-n)/256,則A圖的權(quán)重= n/256,由式 6-1可以得到紅色通道256級半透明算法:

7e113b5a-0116-11ef-a297-92fbcf53809c.png

1.2. Alpha算法實現(xiàn)

1.2.1. Matlab代碼

% -----------------------------------------------------------------------

% CONFIDENTIAL IN CONFIDENCE

% This confidential and proprietary software may be only used as authorized

% by a licensing agreement from CrazyBingo (Thereturnofbingo).

% In the event of publication, the following notice is applicable:

% Copyright (C) 2011-201x CrazyBingo Corporation

% The entire notice above must be reproduced on all authorized copies.

% Author                :       CrazyBingo

% Technology blogs      :       http://blog.chinaaet.com/crazybingo %                               http://www.cnblogs.com/crazybingo % Eamil Address         :       thereturnofbingo@gmail.com

% Filename              :       RGB_Alpha.m

% Data                  :       2013-04-22

% Version               :       1.0

% Description           :       Alpha Algorithm of 2 RGB Image.

% Modification History  :

% Data          By          Version         Change Description

%=======================================================================

% 13/04/22      CrazyBingo  1.0             Original

% -----------------------------------------------------------------------

clear all;  %清除Matlab緩存數(shù)據(jù)

% -----------------------------------------------------------------------

% Read PC iamge to Matlab

IMG1 = imread('E:Matlab_InformationMatlab_ProjectBMPFish2.bmp');    % 讀取RGB文件,X光的魚圖

IMG2 = imread('E:Matlab_InformationMatlab_ProjectBMPWater.bmp');    % 讀取RGB文件,綠葉湖泊

h = size(IMG1,1);         % 讀取圖像高度

w = size(IMG1,2);         % 讀取圖像寬度

figure(1);

subplot(1,2,1);

imshow(uint8(IMG1));

subplot(1,2,2);

imshow(uint8(IMG2));

% -----------------------------------------------------------------------

% IMG1 add tO IMG2 with alpha algorthm

ALPHA_PARAM = 0.6;

IMG1 = double(IMG1);

IMG2 = double(IMG2);

IMG3 = zeros(h,2,3); for i = 1 : h for j = 1 : w

        IMG3(i,j,1) = IMG1(i,j,1)*ALPHA_PARAM + IMG2(i,j,1)*(1-ALPHA_PARAM);

        IMG3(i,j,2) = IMG1(i,j,2)*ALPHA_PARAM + IMG2(i,j,2)*(1-ALPHA_PARAM);

        IMG3(i,j,3) = IMG1(i,j,3)*ALPHA_PARAM + IMG2(i,j,3)*(1-ALPHA_PARAM);

    end

end

% -------------------------------------------------------------------------

figure(2);

imshow(uint8(IMG3));

title('Alpha Image with IMG1 & IMG2');

imwrite(IMG3,'E:Matlab_InformationMatlab_ProjectRGB_Alpha_ProcessRGB_Alpha.bmp');  %保存重建后的BMP

1.2.2. 效果圖

7e1d7ac8-0116-11ef-a297-92fbcf53809c.jpg

1.2.3.半透明算法的FPGA實現(xiàn)

Verilog中,通過組合邏輯,運用內(nèi)嵌乘法器,以及移位運算,可以快速實現(xiàn)對兩幅圖像的透明度的實時控制。設計中設定了256級半透明級數(shù),通過按鍵來控制alpha_data的參數(shù),從而實現(xiàn)調(diào)節(jié)兩幅圖像之間的透明度。Verilog算法如下所示:

1 wire [15:0] red_data = ((8'd255-alpha_data)* lcd_data_reg[15:11]+  alpha_data * lcd_data_in[15:11])>> 8; //紅色通道
2  
3 wire [15:0] gre_data =  ((8'd255-alpha_data)*lcd_data_reg[10:5]+  alpha_data * lcd_data_in[10:5])>> 8; //綠色通道
4  
5 wire [15:0] blu_data =  ((8'd255-alpha_data)*lcd_data_reg[4:0]+  alpha_data * lcd_data_in[4:0])>> 8; //藍色通道
6  
7 assign lcd_data = disp_area?{red_data[4:0],gre_data[5:0],  blu_data[4:0]} : lcd_data_reg; //RGB合并

為測試半透明算法,將分形圖與彩條疊加,通過外部按鍵的調(diào)節(jié),驗證了此半透明算法的正確性。VGA半透明圖形疊加如下圖所示,此時即可見分形圖,又可見8條彩條,兩者相互融合。

7e51a550-0116-11ef-a297-92fbcf53809c.jpg

圖 6-1 半透明算法驗證圖

審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關(guān)注

    關(guān)注

    185

    文章

    2976

    瀏覽量

    230474
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    798

    瀏覽量

    58505
  • 乘法器
    +關(guān)注

    關(guān)注

    8

    文章

    205

    瀏覽量

    37060
  • Alpha
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    25620
  • 按鍵控制
    +關(guān)注

    關(guān)注

    1

    文章

    44

    瀏覽量

    8780

原文標題:Alpha半透明圖形疊加算法Matlab+Verilog實現(xiàn)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    VI上寫的程序運行起來的時候前面板看起來是透明半透明...

    VI上寫的程序運行起來的時候前面板看起來是透明半透明...
    發(fā)表于 08-11 09:21

    求51單片機顯示透明圖

    求51單片機顯示透明圖片,即把一個圖片疊加在另一個圖片上。
    發(fā)表于 08-22 09:50

    《Visual C# 2008程序設計經(jīng)典案例設計與實現(xiàn)》---半透明的T形窗體

    《Visual C# 2008程序設計經(jīng)典案例設計與實現(xiàn)》---半透明的T形窗體[hide][/hide]
    發(fā)表于 05-02 13:32

    DM36x的OSD透明顯示問題,請問有沒有人實現(xiàn)過圖片的透明疊加顯示呢??

    本帖最后由 一只耳朵怪 于 2018-5-28 17:13 編輯 大家好!? ? ? ? 在DM368上,可使用SW OSD Lib實現(xiàn)字符的透明疊加,不知道可不可實現(xiàn)圖片的
    發(fā)表于 05-28 13:09

    如何實現(xiàn)軟件alpha混合?

    件在這些圖中部分重疊。其中一個具有α150,另一個具有255。在FL2.PNG中,實際的LCD屏幕上沒有實現(xiàn)alpha混合。如何實現(xiàn)軟件(非硬件)alpha混合?YTS 以上來自于百
    發(fā)表于 11-22 15:20

    請問AD里銅皮顯示半透明如何改到非透明?

    AD里銅皮顯示半透明,怎么改到非透明?如圖
    發(fā)表于 04-22 07:35

    ili9341透明圖片顯示顏色不正的解決辦法有哪些?

    ili9341 透明圖片顯示顏色不正,只換ili9488的屏和驅(qū)動,其他函數(shù)不變,就能正常顯示。調(diào)了好幾天了也沒找到驅(qū)動哪里的問題,求大神解答
    發(fā)表于 04-22 22:04

    最強加密算法?AES加密算法MatlabVerilog實現(xiàn) 精選資料推薦

    目錄背景AES加密的幾種模式基本運算AES加密原理Matlab實現(xiàn)Verilog實現(xiàn)Testbench此文重點講述了AES加密算法的加密模式
    發(fā)表于 07-28 07:34

    基于FPGA的Alpha半透明圖疊加算法硬件實現(xiàn)

    發(fā)表于 08-24 21:19 ?10次下載

    JAVA教程之半透明圖

    JAVA教程之半透明圖片,很好的JAVA的資料,快來學習吧
    發(fā)表于 04-11 17:14 ?1次下載

    matlab實現(xiàn)圖像疊加

    matlab基礎語言實現(xiàn)圖像疊加,可調(diào)透明度,可調(diào)圖像大小,可調(diào)疊加位置,用以參考
    發(fā)表于 04-19 09:39 ?9次下載

    BP算法及其matlab實現(xiàn)

    高級自動控制算法:BP算法及其matlab實現(xiàn)
    發(fā)表于 12-02 11:45 ?2次下載

    半透明三維物體表面光澤真實感實時渲染方法

    針對具有半透明特性玉石的真實感渲染問題,提出一種利用高光層、漫反射層、透射層三層光照模型疊加的解決方法。首先對散射層結(jié)合漫反射剖面來模擬半透明玉石的次表面散射效果,提出一種可改變漫反射剖面的散射方法
    發(fā)表于 12-11 15:44 ?1次下載
    <b class='flag-5'>半透明</b>三維物體表面光澤真實感實時渲染方法

    使用MatlabVerilog實現(xiàn)fibonacci序列包括源代碼和testbench

    使用MatlabVerilog實現(xiàn)fibonacci序列包括源代碼和testbench(電源技術(shù)論壇app)-使用MatlabVerilog
    發(fā)表于 09-16 14:41 ?13次下載
    使用<b class='flag-5'>Matlab</b>和<b class='flag-5'>Verilog</b><b class='flag-5'>實現(xiàn)</b>fibonacci序列包括源代碼和testbench

    Alpha半透明圖疊加設計

    Alpha 通道**是一個 **8 **位的灰度通道,該通道采用** 2^8 = 256 **級灰度來記錄圖像中的透明度信息
    的頭像 發(fā)表于 10-09 10:42 ?716次閱讀
    <b class='flag-5'>Alpha</b><b class='flag-5'>半透明圖</b>像<b class='flag-5'>疊加</b>設計