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

专栏地址: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-机器视觉 微博:林建民-机器视觉


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Linoi/article/details/22720103
文章标签: 浮雕 怀旧
个人分类: 图像处理与分析
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭