文档章节

Sobel锐化算子,强化边界

dukson
 dukson
发布于 2014/09/12 16:06
字数 362
阅读 22
收藏 0
int CppExtractImgEdgeSobel(byte* fr, byte* to, int frw, int frh)
{
    int stride = (frw * 4 + 4 - 1) / 4 * 4;
    for (int j = 1; j < frh - 1; j++)
        for (int i = 1; i < frw - 1; i++)
        {
            int red(0),blue(0),green(0),gray(0);
            byte *pfr = fr + (j - 1) * stride + (i - 1) * 4;
            
            //1
            red = redFr;
            blue = -blueFr;
            green = -greedFr;
            gray = -grayFr;
            
            //2
            ptr = fr + (j - 1) * stride + (i + 1) * 4;
            red = redFr + red;
            blue = blueFr + blue;
            green = greenFr + green;
            gray = grayFr + gray;
            
            //3
            pfr = fr + j * stride + (i - 1) * 4;
            red = red - 2 * redFr;
            blue = blue - 2 * blueFr;
            green = green - 2 * greenFr;
            gray = gray - 2 * grayFr;
            
            //4
            ptr = fr + j * stride + (i + 1) * 4;
            red = 2 * redFr + red;
            blue = 2 * blueFr + blue;
            green = green - greenFr;
            gray = gray - grayFr;
            
            //5
            ptr = fr + (j + 1) *stride + (i - 1) * 4;
            red = red - redFr;
            blue = blue - blueFr;
            green = green - greenFr;
            gray = gray - grayFr;
            
            //6
            pfr = fr + (j + 1) * stride + (i + 1) * 4;
            red = redFr + red;
            blue = blueFr + blue;
            green = green - greenFr;
            gray = grayFr + gray;
            
            double redv = red * red;
            double greenv = greenv * greenv;
            double bluev = blue * blue;
            
            red = green = blue = 0;
            
            //1
            pfr = fr + (j - 1) * stride + (i - 1) * 4;
            red = redFr;
            blue = -blueFr;
            green = -greenFr;
            gray = -grayFr;
            
            //2
            pfr = fr + (j - 1) * stride + i * 4;
            red = red - 2 * redFr;
            blue = blue - 2 * blueFr;
            green = green - 2 * greenFr;
            gray = gray - 2 * grayFr;
            
            //3
            pfr = fr + (j - 1) * stride + (i + 1) * 4;
            red = red - redFr;
            blue = blue -blueFr;
            green = green - greenFr;
            gray = gray - grayFr;
            
            //4
            pfr = fr + (j + 1) * stride + (i - 1) * 4;
            red = red + redFr;
            blue = blue + blueFr;
            green = green + greenFr;
            gray = gray + grayFr;
            
            //5
            pfr = fr + (j + 1) * stride + i * 4;
            red = red + 2 * redFr;
            blue = blue + 2 * blueFr;
            green = green + 2 * greenFr;
            gray = grat + 2 * grayFr;
            
            //6
            pfr = fr + (j + 1) * stride + (i + 1) * 4;
            red = red + redFr;
            blue = blue + blueFr;
            green = green + greenFr;
            gray = grayFr + gray;
            
            red = (byte)sqrt(red * red + redv);
            green = (byte)sqrt(green * green + greendv);
            blue = (byte)sqrt(blue * blue + blueFr);
            
            byte* pto = to + j * stride + i * 4;
            
            redTo = 255 - (byte)red;
            greedTo = 255 - (byte)green;
            blueTo = 255 - (byte)blue;
            grayTo = 255;
        }
}


© 著作权归作者所有

共有 人打赏支持
上一篇: 锐化图像
下一篇: OpenCV模块
dukson
粉丝 3
博文 6
码字总数 7588
作品 0
长春
私信 提问
[Python图像处理] 十八.图像锐化与边缘检测之Scharr算子、Canny算子和LOG算子

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/89056240 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
04/06
0
0
图像的空域增强处理—空域滤波(matlab实现)

在这里我描述的是我一个初学者所收集到的一些较实用化的信息,具体原理不做描述; 空域滤波分为:平滑滤波(低通滤波)、锐化滤波(高通滤波); 平滑滤波(低通滤波):过滤掉图像中的高频部...

qwe331822775
2018/03/27
0
0
[Python图像处理] 十七.图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子和Laplacian算子

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/89001702 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
04/03
0
0
使用Matlab对二值图像进行轮廓提取

转自:http://blog.csdn.net/q1302182594/article/details/50394576 本文主要总结一下在matlab中可用于进行轮廓提取的函数。 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮...

u013066730
2017/02/22
0
0
【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑、高斯平滑、...

Eastmount
2015/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

equals()的重写规则

自反性。对于任何非null的引用值x,x.equals(x)应返回true。 对称性。对于任何非null的引用值x与y,当且仅当:y.equals(x)返回true时,x.equals(y)才返回true。 传递性。对于任何非null的引用...

无精疯
16分钟前
2
0
Go基础系列:双层channel用法示例

双层通道的解释见Go的双层通道 以下是一个双层通道的使用示例。注意下面的示例中使用了"信号通道"(Signal channel),但这里的信号通道是多余的,仅仅只是为了介绍。 信号通道不用来传递数据,...

echojson
25分钟前
1
0
PHP文件上传error的错误类型

PHP文件上传error的错误类型 - $_FILES['file']['error'] 有以下几种类型 1、UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功。 2、UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 ph......

小良下山化了个缘
51分钟前
2
0
分布式项目(四)Mapping Server 数据映射

上回说道CoAp client和server的实现,数据也安装定义的格式发送到了kafka中,接下来就是Mapping server的实现,物理设备数据映射到抽象设备上,并赋予数据业务含义。 iot-mapping 构建iot-m...

lelinked
今天
3
0
使用data pump驱动的外部表移动数据

使用data pump驱动的外部表移动数据 比如我们有一个报表的数据,准备从一个数据库A中移动到另一个数据库B中,如何实现? 这个问题,我们使用带data pump驱动的外部表方式,很容易实现,具体方法如下...

突突突酱
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部