数字图像处理特效中彩色墨水效果的设计与实现

先来看两张对比图,首先是原图。














































下面是处理后的效果,其实下图看起来已经不再像是一张拍摄的照片了,更像是手工绘制的。



其实除了对于边缘的描绘外,显然对色彩也需要进行适当处理。

应该还可以有改进的空间,但是毕竟算法的实现方式非常的简单,而且毕竟体现了处理此类问题所应该考虑的基本思想。


下面是我基于MAGICHOUSE平台用C++实现的代码。


函数调用部分

SeaFun::InkSketch(our_image_buffer,temp_imageBuffer,X_image,Y_image);

for(int n=0; n<sum; n+=4)
{
        temp_imageBuffer[n] = temp_imageBuffer[n]>0 ? our_image_buffer[n]:temp_imageBuffer[n];
        temp_imageBuffer[n+1] = temp_imageBuffer[n+1]>0 ? our_image_buffer[n+1]:temp_imageBuffer[n+1];
        temp_imageBuffer[n+2] = temp_imageBuffer[n+2]>0 ? our_image_buffer[n+2]:temp_imageBuffer[n+2];
}


实现部分

    static void InkSketch(BYTE* image0, BYTE* image1, unsigned int w, unsigned int h)
    {
        BYTE** imageBuf0 = CreatImage(image0, w, h);
        BYTE** imageBuf1 = CreatImage(image1, w, h);

        double scale=2;
        int templt[25]={
             -1,  -1,  -1,  -1, -1, 
             -1,  -1,  -1,  -1, -1, 
             -1,  -1,  30,  -1, -1, 
             -1,  -1,  -1,  -1, -1, 
             -1,  -1,  -5,  -1, -1
        };

        int x,y;
        int a;
        
        for(y=2; y<h-2; y++)
        for(x=2; x<w-2; x++)
        {
            a=TempltExcute(imageBuf0,w,h,templt,5,x,y);
            a*= scale;
            a = a>255?255:a;    
            a = a<0?0:a;
            SetPixel2(imageBuf1,x,y,a);
        }

        free(imageBuf0);
        free(imageBuf1);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值