您的位置 首页 kreess

ImageJ好玩教程——繪制國旗

五星紅旗,我們都很熟悉,但可能很多人沒有真正地畫過:正值國慶,空餘時間我研究瞭一下怎麼利用ImageJ畫標準的五星紅旗。這可以作為一個有趣的ImageJ小練習,既可以瞭解國

五星紅旗,我們都很熟悉,但可能很多人沒有真正地畫過:

正值國慶,空餘時間我研究瞭一下怎麼利用ImageJ畫標準的五星紅旗。

這可以作為一個有趣的ImageJ小練習,既可以瞭解國旗,也可以練習ROI Manager的使用。


首先看一下國旗的具體參數:

尺寸:

畫法:

  1. 先將旗面劃分為4個等分長方形,再將左上方長方形劃分長寬15×10個方格。
  2. 大五角星的中心位於該長方形上5下5、左5右10之處。大五角星外接圓的直徑為6單位長度。
  3. 四顆小五角星的中心點,第一顆位於上2下8、左10右5,第二顆位於上4下6、左12右3,第三顆位於上7下3、左12右3,第四顆位於上9下1、左10右5之處。
  4. 每顆小五角星外接圓的直徑均為2單位長度。四顆小五角星均有一角尖正對大五角星的中心點[1]

畫國旗可以分為4個步驟:

  1. 填充紅色背景
  2. 畫參考線
  3. 繪制5個五角星
  4. 對每個五角星進行旋轉

難點在於大五角星和4個小五角星的位置,以及小五角星不同的旋轉角度,具體步驟如下:


一、填充紅色背景

根據國旗尺寸,這裡選擇五號(96×64)

1、生成新的圖像(File -> New -> Image)

生成一張白色填充,960×640的RGB圖像。

2、得到國旗紅

國旗的紅色並不是純紅(RGB值不為(255,0,0)),所以需要得到國旗紅色的RGB值。

打開一張國旗圖片,點擊Color Picker,然後點擊國旗背景即可得到國旗紅(RGB值(222,41,16)),作為前景色。

3、填充背景

全選圖片(Ctrl+A),然後Edit -> Fill,即可填充背景。


二、畫參考線

畫四條參考線,連接大五角星以及4個小五星的中心:

ImageJ中沒有現成畫線的功能,需要借助Macro中的makeLine()函數:

以方格(step = 480/15 = 32 pixel)為單位,大五角星的中心坐標為(5,5),小五角星的中心坐標從上到下依次為(10,2)(12,4)(12,7)(10,9),根據坐標分別畫出參考線,並Add到ROI Manager中:

參考線的作用是確定五角星的中心,以及驗證小五角星角度的正確性。


三、繪制5個五角星

ImageJ中有繪制五角星的工具Star Tool(Help -> Examples -> Tools -> Star Tool)

打開之後會在工具欄出現Star Tool的圖標:

Star tool可以通過單擊圖片,自動繪制五角星。

1、得到五角星的顏色

同上,利用Color Picker獲得五角星的顏色:

2、設置五角星參數

雙擊Star Tool圖標,設置參數:

大五角星Minimum size選擇96個pixel(3格),小五角星32個pixel(1格),分別點擊參考線的端點,即五角星的中心,繪制5個五角星:

現在這5個五角星是overlay狀態,關於overlay可以參考這篇文章:

但五角星的角度並不正確,所以需要將overlay轉為ROI,才能對ROI進行旋轉(Image -> Overlay -> To ROI Manager):


四、對每個五角星進行旋轉

以參考線為基準,計算出4個小五角星的最小旋轉角度,可以利用arctan來計算,此處略過。

大五角星需要旋轉36°,首先選中大五角星的ROI,然後進行旋轉(Edit -> Selection -> Rotate):

旋轉後的ROI也Add到ROI Manager中:

依次對4個小五角星做同樣的操作:

然後依次選中5個旋轉後的ROI,Edit -> Fill即可:

最終效果:

國慶快樂~


如果對於ImageJ使用有什麼問題可以私信我,或者給我發郵件:[email protected]更多教程可以關註我的專欄:

希望對大傢有幫助~

參考

  1. ^中華人民共和國國旗 https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E5%9B%BD%E6%97%97

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部