欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

詳解基于FPGA的圖像旋轉(zhuǎn)系統(tǒng)的運用

電子工程師 ? 來源:CSDN技術(shù)社區(qū) ? 作者:weixin_39940788 ? 2021-04-15 14:23 ? 次閱讀

一、圖像旋轉(zhuǎn)原理

圖像旋轉(zhuǎn)是指圖像按照某個位置轉(zhuǎn)動一定角度的過程,旋轉(zhuǎn)中圖像仍保持這原始尺寸。圖像旋轉(zhuǎn)后圖像的水平對稱軸、垂直對稱軸及中心坐標(biāo)原點都可能會發(fā)生變換,因此需要對圖像旋轉(zhuǎn)中的坐標(biāo)進(jìn)行相應(yīng)轉(zhuǎn)換。

如圖,原圖像經(jīng)過順時針旋轉(zhuǎn)角度為 θ 后,源圖像的坐標(biāo)為 P0 ( Xo, Yo ) 的點移動到了 P1(X1, Y1)。

70096670-9dac-11eb-8b86-12bb97331649.png

經(jīng)過推導(dǎo),可以得到上述的 P0 和P1 的坐標(biāo)變換關(guān)系式。

二、MATLAB仿真

方案一、【正向預(yù)設(shè)】從原圖映射到目標(biāo)圖像在此方案中,實現(xiàn)代碼的方式是正向的思路,將原圖中的像素點的坐標(biāo)進(jìn)行坐標(biāo)的旋轉(zhuǎn),然后直接幅值到輸出的圖像中,此方案旨在找到輸入坐標(biāo)與輸出坐標(biāo)之間的代數(shù)對應(yīng)關(guān)系。

在該方法中,首先將原始坐標(biāo)以及目標(biāo)坐標(biāo)放入了極坐標(biāo)中,并且通過在極坐標(biāo)中的關(guān)系,找到了同時滿足X0,Y0,X1,Y1四個參量的方程組,以此來解出對應(yīng)的坐標(biāo)關(guān)系,并以此為基礎(chǔ)得到了輸入與輸出之間的矩陣運算關(guān)系如下:

701757ee-9dac-11eb-8b86-12bb97331649.png

Matlab代碼實現(xiàn)如下:

clear allclc

% 讀入圖片im = imread(‘1.jpg’);figure;imshow(im);

% 求出旋轉(zhuǎn)矩陣a = 40 / 180 * pi;R = [cos(a), -sin(a); sin(a), cos(a)];

% 求出圖片大小 ch為通道數(shù) h為高度 w為寬度sz = size(im);h = sz(1);w = sz(2);ch = sz(3);c = [h; w] / 2;

% 初始化結(jié)果圖像im2 = uint8(zeros(h, w, 3));

for k = 1:ch for i = 1:h for j = 1:w p = [i; j]; % round為四舍五入 pp = round(R*(p-c)+c); if (pp(1) 》= 1 && pp(1) 《= h && pp(2) 》= 1 && pp(2) 《= w) im2(pp(1), pp(2), k) = im(i, j, k); end end endend

% 顯示圖像figure;imshow(im2);

但在實際的測試中發(fā)現(xiàn),這種方法所旋轉(zhuǎn)得到的圖像有著較為嚴(yán)重的失真現(xiàn)象,具體情況如下圖所示:

原圖

旋轉(zhuǎn)后的圖像

很明顯可以看到,在旋轉(zhuǎn)之后這兩張圖片出現(xiàn)了較大的差別,首先是原圖像被裁減了,其次是目標(biāo)圖像中有較多的瑕點(雜點)。究其原因在于,從原圖旋轉(zhuǎn)后得到的目標(biāo)圖像的像素位置在原圖中找不到。另外就是邊緣被裁剪的問題,由于在這個方案中約束了顯示區(qū)域,因此在旋轉(zhuǎn)的過程中,部分像素點就會由于超出邊界而被裁剪。針對以上的兩個問題,進(jìn)行了如下改進(jìn)。

方案二、【逆向預(yù)設(shè)】從目標(biāo)圖像映射到原圖

由于在之前的方案中出現(xiàn)了雜點以及圖像邊緣裁剪的問題,因此在本方案中,我們采用了逆向思維,用目標(biāo)圖像的坐標(biāo)去與原圖的坐標(biāo)進(jìn)行坐標(biāo)匹配,若在原圖像中能找到匹配的圖像,就顯示該點旋轉(zhuǎn)后的點坐標(biāo),若在原圖中找不到該點,則不顯示該點,通過這樣就解決了雜點的問題。 其中,pp為旋轉(zhuǎn)在后的坐標(biāo)對應(yīng)矩陣,在if語句中限定了原圖的區(qū)域,用此區(qū)域則可以到原圖中的坐標(biāo)點,以此來排除不在區(qū)域中的坐標(biāo)點,這樣就可以解決雜點的問題。

在這種方案下,坐標(biāo)的對應(yīng)關(guān)系如下:

70cce06e-9dac-11eb-8b86-12bb97331649.png

MATLAB仿真代碼如下:

clear allclc

% 讀入圖片im = imread(‘1.jpg’);figure;imshow(im);

% 求出旋轉(zhuǎn)矩陣a = 20 / 180 * pi;R = [cos(a), sin(a); -sin(a), cos(a)];

% 求出圖片大小 ch為通道數(shù) h為高度 w為寬度

sz = size(im);h = sz(1);w = sz(2);ch = sz(3);c = [w;h] /2;

% 初始化結(jié)果圖像im2 = uint8(zeros(h, w, 3));for k = 1:ch %遍歷輸出圖像所有位置的像素 for i = 1:h for j = 1:w p = [j; i]; % p :輸出圖像的像素坐標(biāo) % round為四舍五入 pp = round(R*(p-c)+c); %pp :對應(yīng)到輸入圖像的像素坐標(biāo) %逆向進(jìn)行像素的查找 if (pp(1) 》= 1 && pp(1) 《= w && pp(2) 》= 1 && pp(2) 《= h) im2(i, j, k) = im(pp(2), pp(1), k); end end endend

% 顯示圖像figure;imshow(im2);

這樣,該旋轉(zhuǎn)后的圖像就有了較好的還原度,達(dá)到了相應(yīng)的題目要求,具體的方案的效果如下圖所示:

原圖

旋轉(zhuǎn)后的圖像

如圖所示,相對方案一而言,圖像的效果就好了很多,但圖像邊緣仍然存在邊緣被切割的現(xiàn)象。 方案三:考慮到未對旋轉(zhuǎn)后的圖像進(jìn)行顯示區(qū)域的劃分,因此此類旋轉(zhuǎn)只是對單一像素點的旋轉(zhuǎn),然后在原圖像的顯示區(qū)域上進(jìn)行坐標(biāo)點的重新組合,得到顯示的圖像。在解決的方法的思路上,采用目標(biāo)顯示區(qū)域的重新劃分來解決該問題。

具體思路是,采用原圖像的長寬作為基準(zhǔn),再用坐標(biāo)轉(zhuǎn)換的關(guān)系,將長和寬轉(zhuǎn)換到旋轉(zhuǎn)后的坐標(biāo)系中,得到目標(biāo)圖像在旋轉(zhuǎn)后坐標(biāo)系中的顯示區(qū)域,代碼具體如下:

% 讀入圖片im = imread(‘1.jpg’);

figure;imshow(im);

% 求出旋轉(zhuǎn)矩陣a = 30 / 180 * pi;R = [cos(a), -sin(a); sin(a), cos(a)];R = R‘; % 求出旋轉(zhuǎn)矩陣的逆矩陣進(jìn)行逆向查找

% 計算原圖大小sz = size(im);h = sz(1);w = sz(2);ch = sz(3);c1 = [h; w] / 2;

% 計算顯示完整圖像需要的畫布大小hh = floor(w*sin(a)+h*cos(a))+1;ww = floor(w*cos(a)+h*sin(a))+1;c2 = [hh; ww] / 2;

% 初始化目標(biāo)畫布im2 = uint8(ones(hh, ww, 3)*128);for k = 1:ch for i = 1:hh for j = 1:ww p = [i; j]; pp = (R*(p-c2)+c1); mn = floor(pp); ab = pp - mn; a = ab(1); b = ab(2); m = mn(1); n = mn(2); % 線性插值方法 if (pp(1) 》= 2 && pp(1) 《= h-1 && pp(2) 》= 2 && pp(2) 《= w-1) im2(i, j, k) = (1-a)*(1-b)*im(m, n, k) + a*(1-b)*im(m+1, n, k)。.. + (1-a)*b*im(m, n, k) + a*b*im(m, n, k); end end endend

% 顯示圖像figure;imshow(im2);

這樣,就解決了圖像邊緣被裁剪的問題,是整個圖像得以完整的顯示,實際的效果如下:

原圖

旋轉(zhuǎn)后的圖像

從圖示的效果可以看出,邊緣區(qū)域被裁剪的問題被解決了,但問題是圖片加陰影的區(qū)域面積比原圖大很多。 綜合以上三種方案,結(jié)合實際需求,由于我們的顯示是在一塊固定大小的屏幕上進(jìn)行顯示,整個圖像的顯示范圍有限,采用CORDIC算法進(jìn)行坐標(biāo)變換產(chǎn)生的延時太大。最終基于處理速度和資源占用的均衡考慮,最終選擇方案二作為我們圖像旋轉(zhuǎn)的設(shè)計方案。

三、旋轉(zhuǎn)坐標(biāo)計算

在該設(shè)計中,要求圖像擁有0到360的任意角度的旋轉(zhuǎn),坐標(biāo)變換需要角度的正弦和余弦值。 利用matlab生成正余弦表,并將其擴(kuò)大256倍,打印到文件中。利用得到的正余弦表數(shù)值,將其寫入verilog代碼中,生成正余弦查找表。通過輸入角度值來索引其正余弦數(shù)值。Matlab生成正余弦列表的代碼如下:

71bcdbc8-9dac-11eb-8b86-12bb97331649.png

該正弦,余弦通過MATLAB計算得到,并預(yù)先儲存到FPGA的片上儲存空間中,在進(jìn)行坐標(biāo)變換時,讀取對應(yīng)角度的正弦,余弦值,進(jìn)行坐標(biāo)變換。由于計算得到的正弦和余弦值為浮點數(shù),而FPGA擅長于進(jìn)行整數(shù)運算。故要進(jìn)行浮點數(shù)到整數(shù)的轉(zhuǎn)換,具體的實現(xiàn)方法是,將計算得到的浮點正弦,余弦值乘上 256 后再取整,計算得到的結(jié)果于原結(jié)果相比被擴(kuò)大了256倍,而在數(shù)字電路中,除法操作可以用移位來進(jìn)行。結(jié)果右移8位即等效于除于256 。 坐標(biāo)變換的核心代碼如下:

7265e100-9dac-11eb-8b86-12bb97331649.png

將坐標(biāo)變換計算模塊封裝為一個子模塊,輸入輸出圖像的坐標(biāo)和旋轉(zhuǎn)角度后,即可計算出對應(yīng)的輸入圖像對應(yīng)的像素的坐標(biāo)。然后讀取該坐標(biāo)的像素值,寫入到旋轉(zhuǎn)重建的圖像對應(yīng)的坐標(biāo)位置即可。

四、效果展示(Results show)

0、原圖 (正常顯示)

1、順時針旋轉(zhuǎn)22度

2、順時針旋轉(zhuǎn)90度

3、順時針旋轉(zhuǎn)270度

4、順時針旋轉(zhuǎn)341度

五、說明

在公眾號對話框回復(fù) FPGA2019 ,即可獲得該項目的工程源代碼,詳細(xì)的文檔說明,MATLAB仿真代碼。
編輯:lyn

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

    關(guān)注

    1630

    文章

    21802

    瀏覽量

    606409
  • MATLAB仿真
    +關(guān)注

    關(guān)注

    4

    文章

    176

    瀏覽量

    20003
  • 圖像旋轉(zhuǎn)
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    2210

原文標(biāo)題:基于FPGA的圖像旋轉(zhuǎn)系統(tǒng)設(shè)計

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA圖像處理基礎(chǔ)----實現(xiàn)緩存卷積窗口

    像素行與像素窗口 一幅圖像是由一個個像素點構(gòu)成的,對于一幅480*272大小的圖片來說,其寬度是480,高度是272。在使用FPGA進(jìn)行圖像處理時,最關(guān)鍵的就是使用FPGA內(nèi)部的存儲資
    的頭像 發(fā)表于 02-07 10:43 ?107次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>圖像</b>處理基礎(chǔ)----實現(xiàn)緩存卷積窗口

    基于FPGA的GigE Vision相機(jī)圖像采集方案設(shè)計

    1 概述 GigE Vision是一個比較復(fù)雜的協(xié)議,要在FPGA中完全實現(xiàn)具有較大的難度。如果FPGA作為接收端希望實現(xiàn)GigE Vision相機(jī)的配置和圖像采集功能,則只需要實現(xiàn)其中小部分功能
    的頭像 發(fā)表于 01-07 09:34 ?255次閱讀
    基于<b class='flag-5'>FPGA</b>的GigE Vision相機(jī)<b class='flag-5'>圖像</b>采集方案設(shè)計

    基于FPGA實現(xiàn)圖像直方圖設(shè)計

    簡單,單采用FPGA來實現(xiàn)直方圖的統(tǒng)計就稍顯麻煩。若使用Xilinx和Altera的FPGA芯片,可以使用HLS來進(jìn)行圖像的加速處理。但這暫時不是我的重點。 用C語言實現(xiàn)直方圖統(tǒng)計:unsigned
    的頭像 發(fā)表于 12-24 10:24 ?246次閱讀
    基于<b class='flag-5'>FPGA</b>實現(xiàn)<b class='flag-5'>圖像</b>直方圖設(shè)計

    FPGA 實時信號處理應(yīng)用 FPGA圖像處理中的優(yōu)勢

    現(xiàn)場可編程門陣列(FPGA)是一種高度靈活的硬件平臺,它允許開發(fā)者根據(jù)特定應(yīng)用需求定制硬件邏輯。在實時信號處理和圖像處理領(lǐng)域,FPGA因其獨特的優(yōu)勢而受到青睞。 1. 并行處理能力 FPGA
    的頭像 發(fā)表于 12-02 10:01 ?904次閱讀

    FPGA圖像處理領(lǐng)域的優(yōu)勢有哪些?

    語言編程的,因此可以根據(jù)圖像處理的實際需求,動態(tài)地調(diào)整硬件資源的使用。這使得FPGA在處理圖像時能夠?qū)崿F(xiàn)更高的能效比,從而降低系統(tǒng)的功耗。這對于需要長時間運行的
    發(fā)表于 10-09 14:36

    基于 FPGA 的會議系統(tǒng)設(shè)計

    。(5)系統(tǒng)支持現(xiàn)場錄入人員并學(xué)習(xí),且識別率較高。(6)基于 socket 通信,實現(xiàn)將圖像信息從 FPGA 中實時傳輸?shù)娇蛻舳?PC 機(jī)等) 顯示的功能。(7)該會議系統(tǒng)功耗低、體積
    發(fā)表于 08-01 18:40

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計是一個綜合性的項目,它結(jié)合了硬件電路設(shè)計、FPGA編程以及圖像處理技術(shù)。以下是一個詳細(xì)的系統(tǒng)設(shè)計方案,包
    的頭像 發(fā)表于 07-17 11:24 ?1407次閱讀

    基于FPGA圖像采集與顯示系統(tǒng)設(shè)計

    源和固有的并行處理能力,在數(shù)字信號處理、硬件加速、汽車電子等領(lǐng)域得到了廣泛應(yīng)用。在圖像采集與顯示系統(tǒng)中,FPGA能夠?qū)崿F(xiàn)高速、并行的數(shù)據(jù)處理,顯著提高系統(tǒng)的實時性和性能。本文設(shè)計了一個
    的頭像 發(fā)表于 07-17 10:58 ?2125次閱讀

    DSP教學(xué)實驗箱_數(shù)字圖像處理_操作教程:5-1 圖像旋轉(zhuǎn)

    一、實驗?zāi)康?學(xué)習(xí)圖像旋轉(zhuǎn)的原理,掌握圖像的讀取方法,并實現(xiàn)圖像旋轉(zhuǎn)。 二、實驗原理 圖像
    發(fā)表于 06-14 14:03

    FPGA設(shè)計經(jīng)驗之圖像處理

    系列:基于 FPGA圖像邊緣檢測系統(tǒng)設(shè)計(sobel算法) FPGA設(shè)計中 Verilog HDL實現(xiàn)基本的圖像濾波處理仿真 需
    發(fā)表于 06-12 16:26

    基于FPGA的實時邊緣檢測系統(tǒng)設(shè)計,Sobel圖像邊緣檢測,FPGA圖像處理

    摘要 :本文設(shè)計了一種 基于 FPGA 的實時邊緣檢測系統(tǒng) ,使用OV5640 攝像頭模塊獲取實時的視頻圖像數(shù)據(jù),提取圖像邊緣信息并通過 VGA顯示。
    發(fā)表于 05-24 07:45

    全志T527芯片詳解:計算性能與高清圖像編解碼

    全志T527芯片詳解:計算性能與高清圖像編解碼
    的頭像 發(fā)表于 05-21 14:37 ?3104次閱讀
    全志T527芯片<b class='flag-5'>詳解</b>:計算性能與高清<b class='flag-5'>圖像</b>編解碼

    基于FPGA的常見的圖像算法模塊總結(jié)

    意在給大家補充一下基于FPGA圖像算法基礎(chǔ),于是講解了一下常見的圖像算法模塊,經(jīng)過個人的總結(jié),將知識點分布如下所示。
    的頭像 發(fā)表于 04-28 11:45 ?673次閱讀
    基于<b class='flag-5'>FPGA</b>的常見的<b class='flag-5'>圖像</b>算法模塊總結(jié)

    RFID血液智能流轉(zhuǎn)系統(tǒng)在赤峰市中心血站正式啟動

    1月25日,RFID血液智能流轉(zhuǎn)系統(tǒng)在赤峰市中心血站隆重舉行了啟動儀式,標(biāo)志著赤峰市血液全程安全監(jiān)管進(jìn)入了信息化、標(biāo)準(zhǔn)化、智慧化的新時期。赤峰市中心血站領(lǐng)導(dǎo)班子成員及全體職工出席了由赤峰市中心血站副
    的頭像 發(fā)表于 03-07 16:49 ?406次閱讀
    RFID血液智能流<b class='flag-5'>轉(zhuǎn)系統(tǒng)</b>在赤峰市中心血站正式啟動

    FPGA圖像處理—VESA標(biāo)準(zhǔn)與視頻流介紹

    VESA 視頻標(biāo)準(zhǔn)同步信號產(chǎn)生器,是從事FPGA圖像領(lǐng)域工程師經(jīng)常使用到的模塊。
    的頭像 發(fā)表于 02-29 09:56 ?3914次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>圖像</b>處理—VESA標(biāo)準(zhǔn)與視頻流介紹