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

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

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

通過Python將故宮的建筑物圖片,轉(zhuǎn)化為手繪圖

電子工程師 ? 來源:lq ? 2019-02-19 09:26 ? 次閱讀

13日早晨,當(dāng)北京市民拉開窗簾時(shí)發(fā)現(xiàn),窗外雪花紛紛揚(yáng)揚(yáng)在空中飄落,而且越下越大,樹上、草地、屋頂、道路上,都落滿雪花。京城銀裝素裹,這是今冬以來北京迎來的第二場(chǎng)降雪。

一下雪,北京就變成了北平,故宮就變成了紫禁城。八萬張門票在雪花飄下來之前,便早已預(yù)訂一空。

(圖片來源:故宮官網(wǎng)版權(quán)歸故宮官網(wǎng)所有)

看著朋友圈、微博好友都在紛紛曬圖,小編只能羨慕不已。

不過,突然想到,可以通過Python將故宮的建筑物圖片,轉(zhuǎn)化為手繪圖(素描效果)。效果圖如下:

一、概念與原理

我們都知道手繪圖效果的特征主要有:

黑白灰色;邊界線條較重;相同或相近色彩趨于白色;略有光源效果

核心原理:利用像素之間的梯度值和虛擬深度值對(duì)圖像進(jìn)行重構(gòu),根據(jù)灰度變化來模擬人類視覺的模擬程度

把圖像看成二維離散函數(shù),灰度梯度其實(shí)就是這個(gè)二維離散函數(shù)的求導(dǎo),用差分代替微分,求取圖像的灰度梯度。常用的一些灰度梯度模板有:Roberts 梯度、Sobel 梯度、Prewitt 梯度、Laplacian 梯度。

以Sobel 梯度計(jì)算來解釋:

首先計(jì)算出、,然后計(jì)算梯度角?梯度方向及圖像灰度增大的方向,其中梯度方向的梯度夾角大于平坦區(qū)域的梯度夾角。如下圖所示,灰度值增加的方向梯度夾角大,此時(shí)梯度夾角大的方向?yàn)樘荻确较颉?duì)應(yīng)在圖像中尋找某一點(diǎn)的梯度方向即通過計(jì)算該點(diǎn)與其8鄰域點(diǎn)的梯度角,梯度角最大即為梯度方向。

二、圖像的數(shù)組形式與變換

其中,需要用到的方法:

Image.open( ):打開圖片

np.array( ): 將圖像轉(zhuǎn)化為數(shù)組

convert("L"):將圖片轉(zhuǎn)換成二維灰度圖片

Image.fromarray( ):將數(shù)組還原成圖像uint8格式

代碼如下:

fromPILimportImageimportnumpyasnpim=Image.open(r"C:UsersAdministratorDesktopgugong微信圖片_20190216152248.jpg").convert('L')a=np.asarray(im).astype('float')print(a.shape,a.dtype)(1080,608)float64#(1080,608)分別表示高度,寬度

三、圖像的手繪效果處理

實(shí)現(xiàn)思路步驟:

1、梯度的重構(gòu)

numpy的梯度函數(shù)的介紹

np.gradient(a) : 計(jì)算數(shù)組a中元素的梯度,f為多維時(shí),返回每個(gè)維度的梯度

離散梯度: xy坐標(biāo)軸連續(xù)三個(gè)x軸坐標(biāo)對(duì)應(yīng)的y軸值:a, b, c 其中b的梯度是(c-a)/2

而c的梯度是: (c-b)/1

當(dāng)為二維數(shù)組時(shí),np.gradient(a) 得出兩個(gè)數(shù)組,第一個(gè)數(shù)組對(duì)應(yīng)最外層維度的梯度,第二個(gè)數(shù)組對(duì)應(yīng)第二層維度的梯度。

代碼如下:

grad=np.gradient(a)grad_x,grad_y=gradgrad_x=grad_x*depth/100.#對(duì)grad_x值進(jìn)行歸一化grad_y=grad_y*depth/100.#對(duì)grad_y值進(jìn)行歸一化

2、構(gòu)造guan光源效果

設(shè)計(jì)一個(gè)位于圖像斜上方的虛擬光源光源相對(duì)于圖像的視角為Elevation,方位角為Azimuth建立光源對(duì)各點(diǎn)梯度值的影響函數(shù)運(yùn)算出各點(diǎn)的新像素值

其中:

np.cos(evc.el) :單位光線在地平面上的投射長(zhǎng)度

dx,dy,dz :光源對(duì)x,y,z三方向的影響程度

3、梯度歸一化

構(gòu)造x和y軸梯度的三維歸一化單位坐標(biāo)系;

梯度與光源相互作用,將梯度轉(zhuǎn)化為灰度。

4、圖像生成

具體詳情代碼如下:

fromPILimportImageimportnumpyasnpimportosimportjoinimporttimedefimage(sta,end,depths=10):a=np.asarray(Image.open(sta).convert('L')).astype('float')depth=depths#深度的取值范圍(0-100),標(biāo)準(zhǔn)取10grad=np.gradient(a)#取圖像灰度的梯度值grad_x,grad_y=grad#分別取橫縱圖像梯度值grad_x=grad_x*depth/100.#對(duì)grad_x值進(jìn)行歸一化grad_y=grad_y*depth/100.#對(duì)grad_y值進(jìn)行歸一化A=np.sqrt(grad_x**2+grad_y**2+1.)uni_x=grad_x/Auni_y=grad_y/Auni_z=1./Avec_el=np.pi/2.2#光源的俯視角度,弧度值vec_az=np.pi/4.#光源的方位角度,弧度值dx=np.cos(vec_el)*np.cos(vec_az)#光源對(duì)x軸的影響dy=np.cos(vec_el)*np.sin(vec_az)#光源對(duì)y軸的影響dz=np.sin(vec_el)#光源對(duì)z軸的影響b=255*(dx*uni_x+dy*uni_y+dz*uni_z)#光源歸一化b=b.clip(0,255)im=Image.fromarray(b.astype('uint8'))#重構(gòu)圖像im.save(end)defmain():xs=10start_time=time.clock()startss=os.listdir(r"C:UsersAdministratorDesktopgugong")time.sleep(2)forstartsinstartss:start=''.join(starts)sta='C:/Users/Administrator/Desktop/gugong/'+startend='C:/Users/Administrator/Desktop/gugong/'+'HD_'+startimage(sta=sta,end=end,depths=xs)end_time=time.clock()print('程序運(yùn)行了----'+str(end_time-start_time)+'秒')time.sleep(3)main()程序運(yùn)行了----43.01828205879955秒#一共35張圖片

最終效果圖對(duì)比:

最后,你自己動(dòng)手試試吧?通過此代碼為自己畫一張手繪圖,也可以為自己的家鄉(xiāng)或母校畫。

參考資料

http://www.icourse163.org/learn/BIT-1001870002?tid=1001963001#/learn/announce

代碼鏈接:

https://pan.baidu.com/s/1E_aZTRQWOzGV-2GV_iH43w

提取碼:64z9

聲明:本文內(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)投訴
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1088

    瀏覽量

    40516
  • 梯度
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    10333
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4802

    瀏覽量

    84890

原文標(biāo)題:只需45秒,Python給故宮畫一組手繪圖!

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    雷直擊建筑物時(shí)電流分布的電磁場(chǎng)數(shù)值分析pdf

    雷直擊建筑物時(shí)電流分布的電磁場(chǎng)數(shù)值分析 摘要:本文利用一個(gè)簡(jiǎn)單的等效電路和一個(gè)電磁場(chǎng)模式研究了雷直擊建筑物時(shí)的雷電流分布。利用計(jì)算電磁學(xué)代碼(NEC-4)進(jìn)行電磁場(chǎng)數(shù)值分析。通過
    發(fā)表于 10-13 08:56

    建筑物接地電阻的要求

    建筑物接地電阻的要求    依據(jù)GB50057-94(2000版)《建筑物防雷設(shè)計(jì)規(guī)范》第三章、建筑物的防雷措施;第二節(jié)、第一類防雷建筑物的防雷
    發(fā)表于 01-14 16:13

    建筑物火災(zāi)并非只是電線電纜之過

    有機(jī)建筑材料和物品有化為灰燼,甚至鋼梁都能燒熔,任何阻燃電線電纜都無濟(jì)于事。因此,查找火災(zāi)原因時(shí),除了弄清楚前述短路情況之外,也不要在電線電纜的阻燃性能上打主意,況且有很多建筑物使用的不是阻燃電線電纜
    發(fā)表于 03-25 22:12

    如何用labview程序二維圖片轉(zhuǎn)化為比特序列?

    如何用labview程序二維圖片轉(zhuǎn)化為比特序列?
    發(fā)表于 05-16 11:13

    利用PythonPDF轉(zhuǎn)化為圖片的方法

    python的功能真是強(qiáng)大,可以做詞云圖、可以優(yōu)雅地八卦、可以做游戲外掛、還可以PDF轉(zhuǎn)化圖片,這個(gè)功能你還不知道吧,趕緊隨小編我一起來看看吧:之前收集了很多優(yōu)秀的 PDF文檔,但
    發(fā)表于 07-11 17:37

    ?iMX6UL工業(yè)級(jí)核心板在建筑物能耗管理系統(tǒng)中的應(yīng)用方案

    。因此,節(jié)能建筑成了建筑行業(yè)的首要議題。最近十年來,伴隨著電子技術(shù)的革命性進(jìn)步和軟件技術(shù)的不斷完善,產(chǎn)生了通過各種不同的電子裝置,結(jié)合軟件技術(shù),實(shí)現(xiàn)了對(duì)建筑物的能耗進(jìn)行實(shí)時(shí)監(jiān)控和管理。
    發(fā)表于 04-22 16:27

    大型水利水電工程建筑物三維可視化建模技術(shù)研究

    的三維空間位置可以通過Q(x,y,z)表示,而兩個(gè)點(diǎn)對(duì)象的三維空間位置即可以描述建筑物的線段對(duì)象,而多個(gè)線段對(duì)象共同組成線對(duì)象,線對(duì)象又可以描述幾何要素,由此可見數(shù)據(jù)模型可以實(shí)現(xiàn)對(duì)規(guī)則或不規(guī)則
    發(fā)表于 10-22 08:09

    一種基于機(jī)器學(xué)習(xí)的建筑物分割掩模自動(dòng)正則化和多邊形化方法

    化處理,使其更加逼真,即有更多的直線型輪廓,在需要時(shí)構(gòu)造直角。這是通過給定輸入圖像為真的概率的鑒別器和從鑒別器響應(yīng)中學(xué)習(xí)創(chuàng)造更真實(shí)圖像的生成器之間的相互作用來實(shí)現(xiàn)的。最后,從正則化的建筑物分割結(jié)果中訓(xùn)練
    發(fā)表于 09-01 07:19

    建筑物防雷保護(hù)設(shè)計(jì)淺析

    摘要:本文就設(shè)計(jì)中建筑物防雷保護(hù)在防直擊雷、雷電波侵入以及相應(yīng)的解決措施做了一些分析。 關(guān)鍵詞:建筑物 防雷保護(hù) 隨著現(xiàn)代社會(huì)的發(fā)展,建筑物的規(guī)模不斷擴(kuò)大,
    發(fā)表于 11-18 11:02 ?22次下載

    建筑物的泛光照明設(shè)計(jì)

     通常所說的泛光照明是指建筑物的立面照明。建筑物泛光照明的效果,不僅取決于泛光燈具和建筑物表面材質(zhì),還取決于設(shè)計(jì)人員的構(gòu)思、經(jīng)驗(yàn)、藝術(shù)底蘊(yùn)和欣賞能力。照明設(shè)計(jì)
    發(fā)表于 01-19 14:40 ?14次下載

    聯(lián)網(wǎng)轉(zhuǎn)化了人物對(duì)建筑物的認(rèn)知,并縮減運(yùn)營(yíng)開銷且更加環(huán)保

    就最基本的層面上而言,我們希望建筑物(無論是簡(jiǎn)陋居所或是現(xiàn)代的鋼筋玻璃結(jié)構(gòu))可以為住戶提供一個(gè)舒適的空間。聯(lián)網(wǎng)(IoT)轉(zhuǎn)化了人物對(duì)建筑物的認(rèn)知,讓人意識(shí)到那不只是住戶的居住“容器”
    發(fā)表于 05-24 08:24 ?1310次閱讀

    建筑物聯(lián)網(wǎng)市場(chǎng)由于什么增長(zhǎng)的

    從項(xiàng)目類型來看,建筑物聯(lián)網(wǎng)市場(chǎng)由硬件、軟件以及三大部分組成,在預(yù)測(cè)期內(nèi),軟件部分預(yù)計(jì)主導(dǎo)這個(gè)建筑物聯(lián)網(wǎng)市場(chǎng)。
    發(fā)表于 02-23 20:43 ?963次閱讀

    建筑物防雷工程的設(shè)計(jì)與施工

    本文會(huì)介紹建筑物防雷工程的設(shè)計(jì)與施工的基本原理、方法和要求,以及一些典型的案例分析。建筑物防雷工程是為了保護(hù)建筑物及其內(nèi)部設(shè)備、人員和財(cái)產(chǎn)免受雷電危害而采取的一系列技術(shù)措施。建筑物防雷
    的頭像 發(fā)表于 07-07 10:58 ?731次閱讀
    <b class='flag-5'>建筑物</b>防雷工程的設(shè)計(jì)與施工

    建筑物防雷等級(jí)分為幾類

    建筑物的防雷等級(jí)是指建筑物所需的防雷保護(hù)措施的等級(jí)劃分。根據(jù)國(guó)家標(biāo)準(zhǔn)GB 50057-2010《建筑物防雷設(shè)計(jì)規(guī)范》1,建筑物應(yīng)根據(jù)建筑物
    的頭像 發(fā)表于 11-06 09:58 ?3378次閱讀
    <b class='flag-5'>建筑物</b>防雷等級(jí)分為幾類

    建筑物防雷檢測(cè)安全接地應(yīng)用解決方案

    雷電是一種自然現(xiàn)象,具有極高的電壓和電流,對(duì)建筑物及其內(nèi)部設(shè)備、人員和財(cái)產(chǎn)可能造成嚴(yán)重的危害,如火災(zāi)、爆炸、電擊、電磁干擾等。因此,建筑物必須采取有效的防雷措施,以保障建筑物的安全和可靠運(yùn)行。
    的頭像 發(fā)表于 01-24 15:07 ?476次閱讀
    <b class='flag-5'>建筑物</b>防雷檢測(cè)安全接地應(yīng)用解決方案