之前一直认为图像处理是一件很高大上的事情,在一门选修课的课上遇到一个图像处理的作业,上手几个简单的图像处理的算法,也算是入了个最简单的门。 界面简单而又丑陋,代码命名也比较随意,大家重点关注算法就好 在这里一共实现了暗角、降低亮度、灰度、浮雕、马赛克、扩散六个算法。
这里使用的是VS2010,新建C#工程之后。在界面上画出
- 2个pictureBox作为显示的图片的控件。
- 6个button作为不同效果的触发器,
- 2个button作为文件打开和保存的触发器,
- 1个label负责展示运行时间。
这里主要就是调用了openFileDialog和openFileDialog,不具体说。
暗角就是在图像的四角添加逐渐变黑的一个圈。
- 计算顶点与中心的距离maxDistance
- 计算每个像素点与中心的距离distance
- 计算factor = distance / maxDistance
- 将当前像素点的颜色设置为 原颜色 * (1-factor)
降低亮度就是设置当前像素的颜色为原来的一个小于1的系数,要注意各颜色的分量不能超过255。这里我们选取0.6作为系数。
去色也就是要把照片灰化,将照片的RGB调节为灰色的。 具体的就是要把当前像素点的颜色按下面的公式的调整 gary = 0.3 * R + 0.59 * G + 0.11 * B
浮雕效果就是把RGB三个颜色取反。 具体的实现用255-当前颜色的分量
马赛克的基本**就是把一个像素点周围的点的像素取个平均,然后把这些像素点的颜色设为这个平均值。 周围的像素点取的越多,马克赛的效果也就越明显。
类似于水墨在纸上的扩散。随机挑选一个临近的像素,将其设为自身颜色。 这里一定注意要随机取周围的像素。