RM新时代网站-首页

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

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

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

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

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

Alpha算法的研究

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

半透明混合算法目前在常用到的算法是AlphaBlend。其算法如下:假設(shè)一幅圖象是A,另一幅透明的圖象是B,那么透過B去看A,看上去的圖象C就是B和A的混合圖象,設(shè)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è)決定混合透明度的數(shù)值。改變這個(gè) alpha 值可以得到一個(gè)漸變的效果。分離RGB色用"位與"、"移位"運(yùn)算的方法。

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

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

1.2. Alpha算法實(shí)現(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實(shí)現(xiàn)

Verilog中,通過組合邏輯,運(yùn)用內(nèi)嵌乘法器,以及移位運(yùn)算,可以快速實(shí)現(xiàn)對(duì)兩幅圖像的透明度的實(shí)時(shí)控制。設(shè)計(jì)中設(shè)定了256級(jí)半透明級(jí)數(shù),通過按鍵來控制alpha_data的參數(shù),從而實(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; //藍(lán)色通道
6  
7 assign lcd_data = disp_area?{red_data[4:0],gre_data[5:0],  blu_data[4:0]} : lcd_data_reg; //RGB合并

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

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

圖 6-1 半透明算法驗(yàn)證圖

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

    關(guān)注

    185

    文章

    2974

    瀏覽量

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

    關(guān)注

    4

    文章

    798

    瀏覽量

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

    關(guān)注

    8

    文章

    205

    瀏覽量

    37043
  • Alpha
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

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

    關(guān)注

    1

    文章

    44

    瀏覽量

    8773

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    VI上寫的程序運(yùn)行起來的時(shí)候前面板看起來是透明半透明...

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

    求51單片機(jī)顯示透明圖

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

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

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

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

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

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

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

    請(qǐng)問AD里銅皮顯示半透明如何改到非透明?

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

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

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

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

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

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

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

    JAVA教程之半透明圖

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

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

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

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

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

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

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

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

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

    Alpha半透明圖疊加設(shè)計(jì)

    Alpha 通道**是一個(gè) **8 **位的灰度通道,該通道采用** 2^8 = 256 **級(jí)灰度來記錄圖像中的透明度信息
    的頭像 發(fā)表于 10-09 10:42 ?707次閱讀
    <b class='flag-5'>Alpha</b><b class='flag-5'>半透明圖</b>像<b class='flag-5'>疊加</b>設(shè)計(jì)
    RM新时代网站-首页