关于什么是卷积,如何理解卷积 参见这里:
http://blog.csdn.net/jia20003/article/details/7038938
一:轧花
轧花算子(embossfilter)
对一幅数字图像一阶微分结果即可得到轧花效果,根据不同的算子,轧花又
可以分为凹效果与凸效果两种。两个个最简单的轧花算子为:
轧花算子又称为双极性算子,1对图像的贡献意味着平滑,-1对图像的贡献
意味着突出细节,于是最终就得出了双极性的轧花效果。
处理过程:
a.读取图像像素
b.使用轧花算子完成对像素数组的卷积操作
c.整体亮度提升效果– 高斯亮度/基于阈值/直接常量提升
轧花滤镜效果:左边为原图, 右边为轧花处理以后效果
二:边缘提取
Edge detection是图像处理中非常重要而且也是十分常用的图像处理手段之一,边缘提取是
图像二值化的基本步骤之一。边缘提取从本质上来说是高通滤波,从数字信号的角度看,就
是要保留高频信号,去掉低频信号,因此边缘提取有很多频率域算子,将图像完成FFT之后
在频率域完成高通滤波再转到空间域。显然计算量比较大,空间域最经典的边缘提取算法之
一Candy Edge Detection有着非常好的效果。
这里只是抛砖引玉,完成一个最简单基于卷积的空间域边缘提取算子,算子为:
完成卷积以后的效果如下:
对于灰度图完成边缘提取以后效果如下:
基于卷积还可以完成图像的锐化(Sharp Filter),让图像上的差异更加明显。
一个简单的Sharp Filter可以为
得到的效果如下:
完成轧花卷积的代码如下:
@Override
public BufferedImage filter(BufferedImage src, BufferedImage dest) {
int width = src.getWidth();
int height = src.getHeight();
if ( dest == null )
dest = createCompatibleDestImage( src, null );
int[] inPixels = new int[width*height];
int[] outPixels = new int[width*height];
src.getRGB( 0, 0, width, height, inPixels, 0, width );
int index = 0;
int index2 = 0;
int r=0, g=0, b=0;
for ( int y = 0; y < height; y++ ) {
for ( int x = 0; x < width; x++ ) {
int ta = 255, tr = 0, tg = 0, tb = 0;
for(int fr = 0; fr < filterRow; fr++) {
int rowoffset = y + fr;
if(rowoffset < 0 || rowoffset >=height) {
rowoffset = y;
}
for(int fc = 0; fc < filterCol; fc++) {
int coloffset = fc + x;
if(coloffset < 0 || coloffset >= width) {
coloffset = x;
}
index2 = rowoffset * width + coloffset;
int rgb1 = inPixels[index2];
int r1 = (rgb1 >> 16) & 0xff;
int g1 = (rgb1 >> 8) & 0xff;
int b1 = rgb1 & 0xff;
if(isOUT) {
tr += r1 * outfilter[fr][fc];
tg += g1 * outfilter[fr][fc];
tb += b1 * outfilter[fr][fc];
} else {
tr += r1 * infilter[fr][fc];
tg += g1 * infilter[fr][fc];
tb += b1 * infilter[fr][fc];
}
}
}
tr += COLORCONSTANTS;
tg += COLORCONSTANTS;
tb += COLORCONSTANTS;
r = PixelUtils.clamp(tr);
g = PixelUtils.clamp(tg);
b = PixelUtils.clamp(tb);
outPixels[index] = (ta << 24) | (r << 16) | (g << 8) | b;
index++;
}
}
dest.setRGB( 0, 0, width, height, outPixels, 0, width );
return dest;
}
完成简单边缘检测的代码如下:
private void filter(int[] inPixels, int[] outPixels, int height, int width, double[][] filterKernel) {
int index = 0;
int index2 = 0;
int r=0, g=0, b=0;
int semiColumn = filterKernel.length/2;
int semiRow = filterKernel[0].length/2;
for ( int y = 0; y < height; y++ ) {
for ( int x = 0; x < width; x++ ) {
int ta = 255, tr = 0, tg = 0, tb = 0;
for(int fr = -semiRow; fr <= semiRow; fr++) {
int rowoffset = y + fr;
if(rowoffset < 0 || rowoffset >=height) {
rowoffset = y;
}
for(int fc = -semiColumn; fc <= semiColumn; fc++) {
int coloffset = fc + x;
if(coloffset < 0 || coloffset >= width) {
coloffset = x;
}
index2 = rowoffset * width + coloffset;
int rgb1 = inPixels[index2];
int r1 = (rgb1 >> 16) & 0xff;
int g1 = (rgb1 >> 8) & 0xff;
int b1 = rgb1 & 0xff;
tr += ((double)r1 * filterKernel[fr + semiRow][fc + semiColumn]);
tg += ((double)g1 * filterKernel[fr + semiRow][fc + semiColumn]);
tb += ((double)b1 * filterKernel[fr + semiRow][fc + semiColumn]);
}
}
if(enhanceBrightness) {
tr += COLORCONSTANTS;
tg += COLORCONSTANTS;
tb += COLORCONSTANTS;
}
r = PixelUtils.clamp(tr);
g = PixelUtils.clamp(tg);
b = PixelUtils.clamp(tb);
outPixels[index] = (ta << 24) | (r << 16) | (g << 8) | b;
index++;
}
}
}
分享到:
相关推荐
矩阵卷积 图像处理 矩阵卷积 图像处理 矩阵卷积 图像处理
labview图像处理,卷积,线性,相关滤波,中值滤波边
图像处理卷积代码,有卷积原理的示意图,适合初学者。
给出一个二维灰度或者彩色图像。 1、 实现对图像进行不同... 2、 实现图像的加噪、低通滤波、高通滤波、边缘检测、高斯滤波等。 3、 对图像进行特效处理(模糊、马赛克、各种其他特效等)。 4、 有图形交互界面更佳。
VC++图像处理卷积程序集合,可以实现图像卷积操作的源码
采用边缘检测算子对训练图像进行边缘检测,并依据卷积层的卷积核尺寸对边缘图像进行边缘块提取;统计提取到的边缘块以获得边缘特征矩阵,最后计算边缘特征矩阵各列的方差,将方差排序且归一化,选择方差较大部分边缘...
随着训练数据的增加以及机器性能的提高,基于卷积神经网络的目标...重点分析和讨论了两种应用卷积神经网络进行目标检测的思路和方法,指出了目前存在的不足。最后总结了基于卷积神经网络的目标检测以及未来的发展方向。
数字图像处理,包括图像的卷积,相关,线性滤波处理,边缘检测都是运用labview来完成的。
一段对图像进行卷积的程序代码自定义卷积和,可自定义区域处理方法进行卷积操作,自定义卷积和。
卷积神经网络在图像分类和目标检测应用综述_周俊宇....
卷积神经网络具有强大的特征学习能力,随着大数据时代的到来和计算机能力的提升,近年来卷积神经网络在图像识别、目标检测等领域取得了突破性进展,掀起了新的研究热潮。综述卷积神经网络的基本原理,以及其在图像...
数字图像处理中有关卷积的介绍,线性系统理论 一、什么是线性系统 二、调谐信号分析 三、卷积 四、五个有用函数 五、卷积滤波及其应用 要点总结
图像融合 图像处理(卷积、高斯模糊)
图像分类的深度卷积神经网络模型综述 图像分类的深度卷积神经网络模型综述 图像分类的深度卷积神经网络模型综述 图像分类的深度卷积神经网络模型综述 图像分类的深度卷积神经网络模型综述 图像分类的深度卷积神经...
卷积神经网络图像分类应用研究
卷积神经网络模型发展及应用 卷积神经网络模型发展及应用 卷积神经网络模型发展及应用 卷积神经网络模型发展及应用 卷积神经网络模型发展及应用 卷积神经网络模型发展及应用 卷积神经网络模型发展及应用 卷积神经...
图像理解中的卷积神经网络pdf 图像理解中的卷积神经网络pdf
图像检测图像检测图像检测图像检测图像检测图像检测图像检测图像检测图像检测图像检测 图像检测图像检测图像检测图像检测图像检测图像检测图像检测图像检测图像检测图像检测 图像检测图像检测图像检测图像检测图像...
halcon联合MFC边缘提取之高斯导数卷积图像