栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

滤镜新体验,巧用卷积--java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

滤镜新体验,巧用卷积--java

也许你的滤镜已到瓶颈,总有些效果无法完成。牢记一点,遇事不决,求助数学!若采用数学中的卷积概念,即可成功。

卷积具体概念可求助度娘,这里简单说明一下使用方式。

创建一个由前人计算完备的卷积核,用它的中心与所求像素点重叠,然后对应位置相乘,再全部相加便可得到卷积。

也许这样听来比较抽象,无法想象它的效果,给你有图有真相。

而卷积处理后的浮雕效果:

 

 咱们可以开始做了:

public int juanji(int[][] karr,int[][] tem){
    int kk=0;
    for(int i=0;i< karr.length;i++){
        for(int j=0;j 

已经写好一个像素点的计算了!开始用于整张图象!

public void bejuan(Graphics g,int[][] karr){
    int[][] imgpix=getpix("C:\Users\27259\Desktop\aniya.png");//得到图片像素
    int[][] temr=new int[karr.length][karr[0].length];
    int[][] temg=new int[karr.length][karr[0].length];
    int[][] temb=new int[karr.length][karr[0].length];
   
    int[] ll=new int[3];//分开存储R,G,B值
    for(int i=0;i< imgpix.length- karr.length+1;i++){
        for(int j=0;j< imgpix[0].length-karr[0].length+1;j++){
           for(int a=0;a
                for(int b=0;b
                    divide(imgpix[i+a][j+b]);
                    temr[a][b]=red;
                    temg[a][b]=green;
                    temb[a][b]=blue;
                }
            }
            ll[0]=juanji(karr,temr);
            ll[1]=juanji(karr,temg);
            ll[2]=juanji(karr,temb);//得到卷积完成的R,G,B值
            for(int n =0;n<3;n++){
                if(ll[n]>255){
                    ll[n]=255;
                }
                if(ll[n]<0){
                    ll[n]=0;
                }
            }//记得判断R,G,B值,防止越界
            Color cl=new Color(ll[0],ll[1],ll[2]);
            g.setColor(cl);//设置卷积好了的颜色
            g.fillRect(500+i,200+j,1,1);
        }
    }
}

好了还有别的效果:

锐化:

卷积核:

int[][] karr1={{-1,-1,-1},{-1,9,-1},{-1,-1,-1}};

 水平轮廓:

卷积核:

int[][] karr={{-1,-1,-1},{-1,8,-1},{-1,-1,-1}};

Let's try!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992338.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号