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

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

3天內不再提示

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

FPGA之家 ? 來(lái)源:FPGA之家 ? 2024-05-01 10:28 ? 次閱讀

Alpha算法的研究

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

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

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

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

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

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

1.2. Alpha算法實(shí)現

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緩存數據

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

% Read PC iamge to Matlab

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

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實(shí)現

Verilog中,通過(guò)組合邏輯,運用內嵌乘法器,以及移位運算,可以快速實(shí)現對兩幅圖像的透明度的實(shí)時(shí)控制。設計中設定了256級半透明級數,通過(guò)按鍵來(lái)控制alpha_data的參數,從而實(shí)現調節兩幅圖像之間的透明度。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合并

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

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

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

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

    關(guān)注

    177

    文章

    2928

    瀏覽量

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

    關(guān)注

    4

    文章

    774

    瀏覽量

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

    關(guān)注

    8

    文章

    194

    瀏覽量

    36678
  • Alpha
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

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

    關(guān)注

    0

    文章

    44

    瀏覽量

    8733

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    VI上寫(xiě)的程序運行起來(lái)的時(shí)候前面板看起來(lái)是透明半透明...

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

    求51單片機顯示透明圖

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

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

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

    當配置alpha 值為0x00時(shí)是不透明的;當配置alpha值為 0xFF為 透明的,請問(wèn)可以通過(guò)什么api去更改呢?

    本帖最后由 一只耳朵怪 于 2018-5-29 10:30 編輯 在使用DM8168 framebuffer的過(guò)程中我發(fā)現:當配置alpha 值為0x00時(shí)是不透明的;當配置alpha值為
    發(fā)表于 05-28 05:42

    DM36x的OSD透明顯示問(wèn)題,請問(wèn)有沒(méi)有人實(shí)現過(guò)圖片的透明疊加顯示呢??

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

    如何實(shí)現軟件alpha混合?

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

    請問(wèn)AD里銅皮顯示半透明如何改到非透明?

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

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

    ili9341 透明圖片顯示顏色不正,只換ili9488的屏和驅動(dòng),其他函數不變,就能正常顯示。調了好幾天了也沒(méi)找到驅動(dòng)哪里的問(wèn)題,求大神解答
    發(fā)表于 04-22 22:04

    最強加密算法?AES加密算法MatlabVerilog實(shí)現 精選資料推薦

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

    基于FPGA的Alpha半透明圖疊加算法硬件實(shí)現

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

    JAVA教程之半透明圖

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

    matlab實(shí)現圖像疊加

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

    使用MatlabVerilog實(shí)現fibonacci序列包括源代碼和testbench

    使用MatlabVerilog實(shí)現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'>實(shí)現</b>fibonacci序列包括源代碼和testbench

    半透明雙層玻璃側厚的測量方案

    要求測量半透明雙層透明玻璃測量 首先選擇立儀科技對射平臺,根據被測物體的厚度選擇適用的鏡頭,進(jìn)行對心,當上下兩個(gè)鏡頭的光斑重合在一起的時(shí)候進(jìn)行Dark,當把鏡頭調試好以后將產(chǎn)品雙層玻璃放到對射平臺
    的頭像 發(fā)表于 06-29 14:02 ?1192次閱讀
    <b class='flag-5'>半透明</b>雙層玻璃側厚的測量方案

    Alpha半透明圖疊加設計

    Alpha 通道**是一個(gè) **8 **位的灰度通道,該通道采用** 2^8 = 256 **級灰度來(lái)記錄圖像中的透明度信息
    的頭像 發(fā)表于 10-09 10:42 ?454次閱讀
    <b class='flag-5'>Alpha</b><b class='flag-5'>半透明圖</b>像<b class='flag-5'>疊加</b>設計
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看