iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
AI & Data

初學者介紹TensFlow.js系列系列 第 11

[day11]轉換影像張量2

  • 分享至 

  • xImage
  •  

今天我們要來講node的部分

張量到影像
由於node不像瀏覽器有可以用來渲染的畫布,因此只能有效率的寫入檔案。
雖然影像是pixel-by- pixel的值,但是仍然比典型的影像小很多,一但張量轉換成了期編碼檔案之格式碼(JPG,PNG)我們將使用node.js系統寫出。

編寫JPG
當我們打算將張量變成JPG,將使用node.encodeJpeg,此方式接受Int32的表達方法和一些參數選項並能帶回結果資料的promise。
首先先建立一個400X400的影像張量及隨機的RGB後使用node.encodeJpeg,再將生成的資料用系統檔案程式庫寫入。
https://ithelp.ithome.com.tw/upload/images/20220923/20152506GmmbRaQiZG.png
然後我們可以者樣修改影像中的值來窗造出另一個JPG影像。
參數為(預設顏色頻道,品質,漸進清晰,花額外周期在不降低品質的情況進行優化,照明,像素單位,X軸像素密度,Y軸像素密度,儲存在影像後的秘密訊息)

https://ithelp.ithome.com.tw/upload/images/20220923/20152506OfPF5v3zXs.png

而編寫PNG的方式比JPG限制還要更多,但是我們仍然能用類似剛剛教的處理jpg的方式去編寫,
https://ithelp.ithome.com.tw/upload/images/20220923/20152506eaW0yqbPhj.png
此外,他多了一個壓縮設定的參數,範圍為-1到9,預設值為1

https://ithelp.ithome.com.tw/upload/images/20220923/20152506VCwhUIbr3K.png
影像到張量
將影像解碼變張量的過程和編碼的過程類似。
node提供jpd,pmg,bmp,gif等檔案格式功能,但也有一個泛用的解碼格式node.decodeImag,它會自動地試查和轉換。
由於對影像最簡單的方式便是將檔案直接傳遞到命令中,因此待會會利用到fs和path。
https://ithelp.ithome.com.tw/upload/images/20220923/20152506mpseDzOMQZ.png
這裡假設有一個名為cake.jpg的檔案能進行解碼
首先利用檔案系統程式將指定的檔案載進記憶體,
https://ithelp.ithome.com.tw/upload/images/20220923/20152506L7THb21omu.png
之後我們便能將影像解碼成張量並匯入影像的顏色頻道數並成為灰階張量
https://ithelp.ithome.com.tw/upload/images/20220923/20152506WCLYjzF6sF.png
這也是為什麼node.js是訓練機器學習相當好用的工具,當機器學習會使用大量的圖片時node可以直接存取檔案並將其解碼成張量,這過程是非常快速的。

今天就先講到這,明天來談談其他功能。


上一篇
[Day10]轉換影像張量
下一篇
[Day12]常見的影像修改
系列文
初學者介紹TensFlow.js系列30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言