本
文
摘
要
五星红旗,我们都很熟悉,但可能很多人没有真正地画过:
正值国庆,空余时间我研究了一下怎么利用ImageJ画标准的五星红旗。
这可以作为一个有趣的ImageJ小练习,既可以了解国旗,也可以练习ROI Manager的使用。
首先看一下国旗的具体参数:
尺寸:
画法:
先将旗面划分为4个等分长方形,再将左上方长方形划分长宽15×10个方格。大五角星的中心位于该长方形上5下5、左5右10之处。大五角星外接圆的直径为6单位长度。四颗小五角星的中心点,第一颗位于上2下8、左10右5,第二颗位于上4下6、左12右3,第三颗位于上7下3、左12右3,第四颗位于上9下1、左10右5之处。每颗小五角星外接圆的直径均为2单位长度。四颗小五角星均有一角尖正对大五角星的中心点[1]画国旗可以分为4个步骤:
填充红色背景画参考线绘制5个五角星对每个五角星进行旋转难点在于大五角星和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可以参考这篇文章:
Treasure琛:ImageJ实用技巧——图像标注(基本功能篇)115 赞同 · 23 评论文章但五角星的角度并不正确,所以需要将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使用有什么问题可以私信我,或者给我发邮件:zhaoyc9@163.com
ImageJ实用教程zhuanlan.zhihu.com/c_1069243926476673024ImageJ开发教程zhuanlan.zhihu.com/c_1101076075773370368希望对大家有帮助~