图像处理软件开发记录(六) 图像特效(浮雕、怀旧)

专栏地址:http://blog.csdn.net/column/details/imagep.html

本篇文章主要记录一下图像处理软件中的图像特效(浮雕、怀旧)的实现过程。


图像浮雕效果

浮雕的算法就是对图像中的每一个点做卷积处理,采用的掩模矩阵如下所示:

[1  0  0;

 0  0  0;

 0  0 -1]

假设原图像为X,处理后的图像为Y,也就是说,对于坐标(i,j)点,其浮雕效果图的公式就是: 

Y(i,j)=X(i+1,j+1)- X(i-1,j-1)+ 128

当然X,Y的取值均值0~255之间。

Ref:学习OpenCV:滤镜系列(1)—— 雕刻&浮雕(小熊不去实验室)


Code:

void MainWindow::on_actionRelief_triggered()
{
   cv::Mat img0(image.size(),CV_8UC3);
   //cv::Mat img1(image.size(),CV_8UC3);

   for(int y = 1; y < image.rows-1; y++)
   {
       uchar *p0 = image.ptr<uchar>(y);
       uchar *p1 = image.ptr<uchar>(y+1);

       uchar *q0 = img0.ptr<uchar>(y);
       for(int x = 1; x < image.cols-1; x++)
       {
           for(int i=0;i<3;i++)
           {
               int tmp0 = p1[3*(x+1)+i]-p0[3*(x-1)+i]+128;
               if(tmp0 < 0)
                   q0[3*x+i]=0;
               else if(tmp0>255)
                   q0[3*x+i]=255;
               else
                   q0[3*x+i]=tmp0;
            }
       }
   }

   cv::imwrite("./img0.jpg",img0);
   ui->textBrowser->clear();
   ui->textBrowser->append("<img src= ./img0.jpg>");
}

效果:




图像怀旧效果

图像的怀旧效果主要是对RGB的值进行调整,公式如下:


Code:

void MainWindow::on_actionOld_triggered()
{
    cv::Mat oldImage(image.size(),CV_8UC3);
    for(int y = 0; y < image.rows; y++)
    {
        uchar* P0 = image.ptr<uchar>(y);
        uchar* P1 = oldImage.ptr<uchar>(y);
        for(int x = 0; x < image.cols; x++)
        {
            float B = P0[3*x];
            float G = P0[3*x+1];
            float R = P0[3*x+2];
            float newB = 0.272*R + 0.534*G + 0.131*B;
            float newG = 0.349*R + 0.686*G + 0.168*B;
            float newR = 0.393*R + 0.769*G + 0.189*B;
            if(newB <  0 ) newB = 0;
            if(newB > 255) newB = 255;
            if(newG <  0 ) newG = 0;
            if(newG > 255) newG = 255;
            if(newR <  0 ) newR = 0;
            if(newR > 255) newR = 255;
            P1[3*x] = (uchar)newB;
            P1[3*x+1] = (uchar)newG;
            P1[3*x+2] = (uchar)newR;
        }
    }
    cv::imwrite("./old.jpg",oldImage);
    ui->textBrowser->clear();
    ui->textBrowser->append("<img src= ./old.jpg>");
}


效果:


更多图像处理、机器视觉资料,请关注博客:LinJM-机器视觉 微博:林建民-机器视觉


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值