国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

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

電子工程師 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 作者:weixin_39940788 ? 2021-04-15 14:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

二、MATLAB仿真

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

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

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

Matlab代碼實(shí)現(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);

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

原圖

旋轉(zhuǎn)后的圖像

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

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

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

在這種方案下,坐標(biāo)的對(duì)應(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 :對(duì)應(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)后的圖像

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

具體思路是,采用原圖像的長(zhǎng)寬作為基準(zhǔn),再用坐標(biāo)轉(zhuǎn)換的關(guān)系,將長(zhǎng)和寬轉(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)行逆向查找

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

% 計(jì)算顯示完整圖像需要的畫布大小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);

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

原圖

旋轉(zhuǎn)后的圖像

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

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

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

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

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

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

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

四、效果展示(Results show)

0、原圖 (正常顯示)

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

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

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

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

五、說(shuō)明

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

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

    關(guān)注

    1660

    文章

    22411

    瀏覽量

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

    關(guān)注

    4

    文章

    176

    瀏覽量

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

    關(guān)注

    0

    文章

    3

    瀏覽量

    2298

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何以編程方式在觸摸屏 MIPI 顯示器上旋轉(zhuǎn)圖像

    如何以編程方式在觸摸屏 MIPI 顯示器上旋轉(zhuǎn)圖像? 我正在使用 Gnome 的出廠映像202411。我沒(méi)有鍵盤和鼠標(biāo),互聯(lián)網(wǎng)信息亭正在 FireFox 上加載。 我嘗試了 xrandr 實(shí)用程序
    發(fā)表于 02-04 06:45

    JG024Z-DX系列 光電旋轉(zhuǎn)測(cè)徑儀 360度高精高速

    4.旋轉(zhuǎn)部件 旋轉(zhuǎn)部件采用伺服電機(jī)加同步帶傳動(dòng),旋轉(zhuǎn)平穩(wěn),定位精確,噪音低。 5.電能傳遞部件 旋轉(zhuǎn)系統(tǒng)電能傳遞采用導(dǎo)電滑環(huán) 傳輸穩(wěn)定性高?:能夠有效減少信號(hào)干擾和電阻變化,確保穩(wěn)定
    發(fā)表于 01-30 14:23

    圖像采集卡分類、接口與性能指標(biāo)詳解

    、接口類型與性能指標(biāo)直接決定了視覺(jué)系統(tǒng)的成像質(zhì)量、傳輸效率和實(shí)時(shí)處理能力。以下從分類、主流接口、核心性能指標(biāo)三個(gè)維度展開(kāi)詳解,覆蓋工業(yè)級(jí)、商用級(jí)全場(chǎng)景應(yīng)用特性。一
    的頭像 發(fā)表于 01-29 16:55 ?457次閱讀
    <b class='flag-5'>圖像</b>采集卡分類、接口與性能指標(biāo)<b class='flag-5'>詳解</b>

    隨鉆測(cè)量系統(tǒng)旋轉(zhuǎn)閥脈沖器的設(shè)計(jì)與優(yōu)化

    隨鉆測(cè)量(MWD)系統(tǒng)中的旋轉(zhuǎn)閥泥漿脈沖發(fā)生器是實(shí)現(xiàn)井下數(shù)據(jù)實(shí)時(shí)上傳的關(guān)鍵裝置。該裝置通過(guò)調(diào)制鉆井液壓力波動(dòng),將定向參數(shù)和地層參數(shù)編碼傳輸。
    的頭像 發(fā)表于 12-02 13:46 ?381次閱讀

    圖像采集卡:機(jī)器視覺(jué)時(shí)代的圖像數(shù)據(jù)核心樞紐

    一、圖像采集卡的技術(shù)本質(zhì):從信號(hào)到數(shù)據(jù)的“轉(zhuǎn)換器”與“傳輸通道”圖像采集卡(ImageCaptureCard)是機(jī)器視覺(jué)系統(tǒng)的核心硬件組件,本質(zhì)是通過(guò)專用芯片(如FPGA、ASIC)實(shí)
    的頭像 發(fā)表于 11-12 15:15 ?623次閱讀
    <b class='flag-5'>圖像</b>采集卡:機(jī)器視覺(jué)時(shí)代的<b class='flag-5'>圖像</b>數(shù)據(jù)核心樞紐

    基于FPGA的CLAHE圖像增強(qiáng)算法設(shè)計(jì)

    CLAHE圖像增強(qiáng)算法又稱為對(duì)比度有限的自適應(yīng)直方圖均衡算法,其算法原理是通過(guò)有限的調(diào)整圖像局部對(duì)比度來(lái)增強(qiáng)有效信號(hào)和抑制噪聲信號(hào)。
    的頭像 發(fā)表于 10-15 10:14 ?649次閱讀
    基于<b class='flag-5'>FPGA</b>的CLAHE<b class='flag-5'>圖像</b>增強(qiáng)算法設(shè)計(jì)

    基于FPGA利用sm4進(jìn)行實(shí)時(shí)圖像加密

    求一份在fpga上利用sm4進(jìn)行實(shí)時(shí)圖像加密的文件
    發(fā)表于 09-15 19:05

    友思特方案 | FPGA 加持,友思特圖像采集卡高速預(yù)處理助力視覺(jué)系統(tǒng)運(yùn)行提速增效

    圖像預(yù)處理是圖像處理關(guān)鍵中間環(huán)節(jié),通過(guò)優(yōu)化傳感器到主機(jī)的數(shù)據(jù)傳輸處理為后續(xù)減負(fù)。其算法依托硬件執(zhí)行,搭載?FPGA?的友思特圖像采集卡以高速運(yùn)算和并行特性縮短處理時(shí)間、降低延遲并提升吞
    的頭像 發(fā)表于 08-20 09:18 ?981次閱讀
    友思特方案 | <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>圖像</b>采集卡高速預(yù)處理助力視覺(jué)<b class='flag-5'>系統(tǒng)</b>運(yùn)行提速增效

    基于米爾MYC-YM90X安路飛龍DR1開(kāi)發(fā)板儀表圖像識(shí)別系統(tǒng)開(kāi)發(fā)

    FPGA 之間的高速數(shù)據(jù)交互,峰值帶寬可達(dá) 12.8GB/s,納秒級(jí)延遲交互確保了數(shù)據(jù)傳輸?shù)募皶r(shí)性與準(zhǔn)確性 。在儀表圖像識(shí)別系統(tǒng)中,攝像頭采集的圖像數(shù)據(jù)可通過(guò) MIPI 接口快速傳輸至
    發(fā)表于 08-17 21:29

    FPGA 加持,友思特圖像采集卡高速預(yù)處理助力視覺(jué)系統(tǒng)運(yùn)行提速增效

    圖像預(yù)處理是圖像處理關(guān)鍵環(huán)節(jié),可優(yōu)化數(shù)據(jù)傳輸、減輕主機(jī)負(fù)擔(dān),其算法可在FPGA等硬件上執(zhí)行。友思特FPGA圖像采集卡憑借
    的頭像 發(fā)表于 08-13 17:41 ?1115次閱讀
    <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>圖像</b>采集卡高速預(yù)處理助力視覺(jué)<b class='flag-5'>系統(tǒng)</b>運(yùn)行提速增效

    基于FPGA的數(shù)字識(shí)別系統(tǒng)設(shè)計(jì)

    圖像處理領(lǐng)域,圖像識(shí)別是較為困難而關(guān)鍵的技術(shù)。這項(xiàng)技術(shù)被廣泛的應(yīng)用到娛樂(lè)、工業(yè)、軍事等領(lǐng)域。本次設(shè)計(jì)數(shù)字識(shí)別系統(tǒng)已經(jīng)在車牌識(shí)別、運(yùn)動(dòng)員號(hào)碼識(shí)別等多處運(yùn)用。本
    的頭像 發(fā)表于 07-16 14:28 ?1526次閱讀
    基于<b class='flag-5'>FPGA</b>的數(shù)字識(shí)別<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    itop-3588開(kāi)發(fā)板Android系統(tǒng)開(kāi)發(fā)筆記-旋轉(zhuǎn) Android系統(tǒng)

    系統(tǒng)顯示方向需要旋轉(zhuǎn) 90 度 修改 Android12 源碼的 device/rockchip/common/BoardConfig.mk 文件,修改主屏顯示的方向,角度可根據(jù)顯示需求,自定義修改 0
    發(fā)表于 05-19 11:04

    FPGA新品】正點(diǎn)原子L22開(kāi)發(fā)板來(lái)了!采用紫光的Logos系列FPGA,適合工業(yè)控制、圖像處理、高速通信等領(lǐng)域!

    FPGA新品】正點(diǎn)原子L22開(kāi)發(fā)板來(lái)了!采用紫光的Logos系列FPGA,適合工業(yè)控制、圖像處理、高速通信等領(lǐng)域! ATK-L22開(kāi)發(fā)板采用紫光的Logos系列FPGA,板載1顆DD
    發(fā)表于 04-21 17:28

    技術(shù)分享|iTOP-RK3588開(kāi)發(fā)板Ubuntu20系統(tǒng)旋轉(zhuǎn)屏幕方案

    技術(shù)分享|iTOP-RK3588開(kāi)發(fā)板Ubuntu20系統(tǒng)旋轉(zhuǎn)屏幕方案
    的頭像 發(fā)表于 04-18 15:19 ?1330次閱讀
    技術(shù)分享|iTOP-RK3588開(kāi)發(fā)板Ubuntu20<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>旋轉(zhuǎn)</b>屏幕方案

    基于衛(wèi)星圖像的智能定位系統(tǒng)軟件

    基于衛(wèi)星圖像的智能定位系統(tǒng)軟件是衛(wèi)星導(dǎo)航、圖像處理與智能算法融合的前沿技術(shù)結(jié)晶,在高精度定位領(lǐng)域具有卓越表現(xiàn)。以下是對(duì)這類軟件的詳細(xì)介紹: 應(yīng)用案例 目前,已有多個(gè)基于衛(wèi)星圖像的智能定
    的頭像 發(fā)表于 04-01 09:55 ?1023次閱讀