java lowpoly低多边形风格图片生成
lowpoly风格的图片生成,java实现。
闲着没事干刷知乎,刷到这样一个问题http://www.zhihu.com/question/29856775
看看觉得还是挺好看的,那么,我也想提高b格走一波。于是乎根据前人的经验,用java实现了一波,效果不错,根据原图生成效果如下:
有没有很酷的感觉,哈哈哈哈。
源码在文章最后有打包,想直接看源码的下拉!
看完效果,我们来说下原理。
首先,一张图片,难点是如何拼出来这些三角形?
第一步,我们先确定边缘点,用这些点去生成这堆三角形。
边缘点如何确定?【sobel算子】是常用的方法。
具体的算法内容我也解释不清,实现就是
【0,-1,0】
【-1,4,,-1】
【0,-1,0】
用这个矩阵去和图片矩阵做卷积和。
得出来新的图片中再根据灰度过滤出来一些点。
大概实现如下:
BufferedImage newPic = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_3BYTE_BGR);float[] elements = { 0.0f, -1.0f, 0.0f, -1.0f, 4.0f, -1.0f, 0.0f,-1.0f, 0.0f };Kernel kernel = new Kernel(3, 3, elements);ConvolveOp cop = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);cop.filter(originalPic, newPic);return newPic;
这里就得到了新的灰度图,然后过滤一些点。
for (int y = 1; y < height - 1; ++y){for (int x = 1; x < width - 1; ++x){int rgb=buf.getRGB(x, y);rgb=(rgb & 0xff0000) >> 16;//留灰度if(rgb>graMax){//dt.delaunayPlace(new Pnt(x,y));//加入三角点pnts.add(new MyPoint(x,y));
// outBinary.setRGB(x, y, 0xffffffff);}}}
灰度大于特定值的点我们才取,一般用30,40左右。
(为了效率,我们需要控制最后点的数量,所以先把点存入list,然后打乱,随机取出特定数量,我这里使用4000个点来生成三角形,
即使只有4000个点,我的破笔记本还是用了1分钟来生成最后的效果图,所以需要耐心等待。。。)
那么,现在我们有了一堆点,接下来呢?
接下来用这些点拼接三角形。我们使用【Delaunay三角剖分算法】具体的思路参考这里:
Watson算法的基本步骤是:
1、构造一个超级三角形,包含所有散点,放入三角形链表。
2、将点集中的散点依次插入,在三角形链表中找出外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的全部顶点连接起来,完成一个点在Delaunay三角形链表中的插入。
3、根据优化准则对局部新形成的三角形优化。将形成的三角形放入Delaunay三角形链表。
4、循环执行上述第2步,直到所有散点插入完毕。
来自于百度百科:http://baike.baidu.com/link?url=pQU5YL2rQxa50zO7NWS10uUdOEIIv8h4QaNGKE_-tftyIpbMxhhP0wxZ-RqIePPHhKyn_PA8vInKAJ8n2NYB-_
如果想深入了解的话,建议去搜搜其他博文。
由于我自己对三角剖分的理解不足,所以我这里采用了别人的算法实现。
最后一步,我们构建好了所有的三角形,取出每个三角形中间点的颜色填充三角形,于是乎,就有了开头的效果图。
最后的最后。所有源码的打包,运行PicDemo就可以查看演示,记得自行更改图片的路径!!!
链接: http://pan.baidu.com/s/1pKeHjJ1 密码: dvnd
java lowpoly低多边形风格图片生成相关推荐
- 【滤镜算法】低多边形风格介绍及Matlab实现
0. 低多边形风格概述 0.0. 定义及简介 视觉艺术中,采取尽量少的多边形对某一特定形象进行表现的艺术风格称为低多边形风格.低多边形风格以其硬件友好,视觉冲击(高对比度)强,风格简约而在近年来受到越 ...
- PS轻松打造低多边形风格图像
大家好,今天来教大家一个低多边形风格的图像处理.低多边形风格介于抽象与象形之间,是一种表现力很强的插画类型,用于LOGO的设计也未尝不可.它的绘制过程也非常简单,尤其在AI中,利用三角色块一个个拼缀而 ...
- Blender从头开始装配和动画制作低多边形风格的FPS手臂
Rigging and Animating Low Poly FPS Arms in Blender MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语 ...
- php 画low poly,五分钟教你明白高大上LOW-POLY风格图片生成术
有没有看到看到效果高大上的图片,觉得离自己很远,望而生畏?今天给大家介绍一种名为LOW-POLY的风格图片,让所有人都一起来LOW-POLY一把,高大上一把! 感谢新浪微博朋友@创意农民 授权分享.本 ...
- java captcha 验证码_验证码图片生成工具类——Captcha.java
验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. import java.awt.Color; import java.awt ...
- 低多边形(Low Poly)风格会不会成为移动游戏时代的8bit像素
在iPhone进入游戏市场之前,大家都认为PC和主机游戏的画面的进化趋势是变得越来越逼真.有越来越多的多边形数.让游戏更贴近现实是游戏的核心进化趋势,所以制作者们在游戏中塞进更多的多边形,以实现更逼真 ...
- 绘制多边形_PS学习教程!教你绘制低多边形星空效果熊猫头像
低多边形风格介于抽象与象形之间,是一种表现力很强的插画类型,用于LOGO的设计也未尝不可.它的绘制过程也非常简单,尤其在AI中,利用三角色块一个个拼缀而成即可,设计师要做的是对色彩的选择和控制,以便能 ...
- 【有利可图网】PS教程:制造低多边形熊猫头像
低多边形风格介于抽象与象形之间,是一种表现力很强的插画类型,用于LOGO的设计也未尝不可.它的绘制过程也非常简单,尤其在AI中,利用三角色块一个个拼缀而成即可,设计师要做的是对色彩的选择和控制,以便能 ...
- Unity Shader(一) Lowpoly动态低多边形 (QQ登录界面低边动画)
前言 在逛论坛的时候偶然发现有人在问动态低多边形(Lowpoly)是如何实现的,因为经常编写UGUI拓展对顶点操作较为熟悉的我立马就想到利用继承UnityEngine.Graphic,重写OnPopu ...
最新文章
- 智能车竞赛技术报告 | 双车接力组 - 沈阳航空航天大学 - 精神小车成双 - 三轮车
- update_by_query timeout
- Android handler Thread 修改UI Demo
- CDOJ 1070 秋实大哥打游戏 带权并查集
- 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
- c语言中void arrout,c语言学习笔记(数组、函数
- JDK自带的log-java.util.logging
- jpa embedded_JPA @Embeddable和@Embedded
- Flutter中Widget 、Element、RenderObject角色深入分析
- 关于STL的一些笔记
- php上传图片显示在当前页,PHP上传图片到数据库并显示
- java web 锁_Java中锁的分类
- 开放域对话中粗粒度响应选择的上下文细到粗蒸馏
- Go 能拯救已经失败的可视化编程?
- H3C nqa 配置
- VSCode 离线安装中文语言包
- 深度学习 | 深度学习算法中英文对照表
- Git cherry-pick 详解
- 南方都市报:红心照耀MSN
- 如何在各种非三星电脑上安装Samsung Notes三星笔记