先看基于模板的
1.
3x3
1/9
|
1/9
|
1/9
|
1/9
|
1/9
|
1/9
|
1/9
|
1/9
|
1/9
|
这个模板很明显,就是把当前像素的值用周围的像素值的平均值代替,产生模糊效果
//模糊处理
voidImageProcess::BlurImage(CImage*srcImage,CImage*outImage,intblurType)
...{
CWaitCursorWaitCursor;
//设置进度条范围
((CMainFrame*)AfxGetMainWnd())->SetProgressRange(0,srcImage->GetWidth());
for(intx=0;x<srcImage->GetWidth();x++)
...{
//设置当前进度
((CMainFrame*)AfxGetMainWnd())->SetProgressPos(x);
for(inty=0;y<srcImage->GetHeight();y++)
...{
intr=0,g=0,b=0;
for(intcol=-blurType;col<=blurType;col++)
...{
for(introw=-blurType;row<=blurType;row++)
...{
COLORREFpixel;
//防止越界
if((x+row)<0||(x+row)>=srcImage->GetWidth()||
(y+col)<0||(y+col)>=srcImage->GetHeight())
pixel=srcImage->GetPixel(x,y);
else
pixel=srcImage->GetPixel(x+row,y+col);
r+=GetRValue(pixel);
g+=GetGValue(pixel);
b+=GetBValue(pixel);
}
}
//取平均值
intblocks=(blurType*2+1)*(blurType*2+1);
r/=blocks;
g/=blocks;
b/=blocks;
//写回图像
outImage->SetPixelRGB(x,y,r,g,b);
}
}
}
同样,也有5x5,7x5等等的模板,模板越大,处理后的图像就越模糊
2.
这是另一种模板,是为了增强当前像素与周围像素的差别,产生的效果就是:锐化
此时的模板叫Laplacian模板,当然,这不是唯一的一种形式,例如:
-1-2-1
0 0 0
1 2 1
-1 0 1
-2 0 2
-1 0 1
是两种简化运算的近似效果,可以取得更快的处理速度
//锐化图像
voidImageProcess::SharpImage(CImage*srcImage,CImage*outImage,intsharpType)
...{
intLaplacian[3][9]=
...{
...{0,-1,0,-1,4,-1,0,-1,0},
...{-1,-2,-1,0,0,0,1,2,1},
...{-1,0,1,-2,0,2,-1,0,1}
};
CWaitCursorWaitCursor;
//设置进度条范围
((CMainFrame*)AfxGetMainWnd())->SetProgressRange(0,srcImage->GetWidth());
for(intx=0;x<srcImage->GetWidth();x++)
...{
//设置当前进度
((CMainFrame*)AfxGetMainWnd())->SetProgressPos(x);
for(inty=0;y<srcImage->GetHeight();y++)
...{
intr=0,g=0,b=0,index=0;;
for(intcol=-1;col<=1;col++)
...{
for(introw=-1;row<=1;row++)
...{
COLORREFpixel;
//防止越界
if((x+row)<0||(x+row)>=srcImage->GetWidth()||
(y+col)<0||(y+col)>=srcImage->GetHeight())
pixel=srcImage->GetPixel(x,y);
else
pixel=srcImage->GetPixel(x+row,y+col);
r+=GetRValue(pixel)*Laplacian[sharpType][index];
g+=GetGValue(pixel)*Laplacian[sharpType][index];
b+=GetBValue(pixel)*Laplacian[sharpType][index];
index++;
}
}
//增强
COLORREFpixel=srcImage->GetPixel(x,y);
//r+=GetRValue(pixel);
//g+=GetGValue(pixel);
//b+=GetBValue(pixel);
//处理颜色值溢出
r=(r>255)?255:r;
r=(r<0)?0:r;
g=(g>255)?255:g;
g=(g<0)?0:g;
b=(b>255)?255:b;
b=(b<0)?0:b;
//写回图像
outImage->SetPixelRGB(x,y,r,g,b);
}
}
}
3.基本的灰度变换
这应该是最简单的变换了,s=f(x,y),s为处理后的像素颜色值,而f(x,y)是什么函数,就决定了处理效果
如:
图像反转:s=L-1-r,常用于医学上的透视图的处理
对数变换:s=cLog(1+r),可以扩展被压缩的高值图像中的暗像素
幂次变换:s=cr^γ,这就是传说中的伽马校正!
代码示例,仅有对数变换,其它同理
//对数变换
voidImageProcess::LogTransform(CImage*srcImage,CImage*outImage,intc)
...{
CWaitCursorWaitCursor;
//设置进度条范围
((CMainFrame*)AfxGetMainWnd())->SetProgressRange(0,srcImage->GetWidth());
for(intx=0;x<srcImage->GetWidth();x++)
...{
//设置当前进度
((CMainFrame*)AfxGetMainWnd())->SetProgressPos(x);
for(inty=0;y<srcImage->GetHeight();y++)
...{
intr=0,g=0,b=0;
COLORREFpixel=srcImage->GetPixel(x,y);
r=GetRValue(pixel);
g=GetGValue(pixel);
b=GetBValue(pixel);
r=(int)(c*log(1.0f+r));
g=(int)(c*log(1.0f+g));
b=(int)(c*log(1.0f+b));
//处理颜色值溢出
r=(r>255)?255:r;
r=(r<0)?0:r;
g=(g>255)?255:g;
g=(g<0)?0:g;
b=(b>255)?255:b;
b=(b<0)?0:b;
//写回图像
outImage->SetPixelRGB(x,y,r,g,b);
}
}
}
分享到:
相关推荐
该代码为灰度图像增强,可以抵抗阳光对灰度摄像头采集信息的干扰,通过MATLAB仿真具有不错的效果。
从研究图像增强的空域法人手,利用多尺度Retinex灰度图像增强算法完成图像的增强。做到改善图像颜色恒常性,压缩图像动态范围,提高对比度,有效显示淹没在阴影、光照等区域中的细节。在仿真实验中,对图像进行高斯...
分析了传统灰度图像直方图均衡化算法的不足,讨论并实现了一种改进的直方图均衡化图像增强算法。该算法与传统的算法相比,给出了合适的映射关系,运算效果有很大改善,减少了图像信息的丢失,特别是对于质量较差的...
一种基于改善灰度图像的直方图的图像增强算法
matlab开发-灰度图像增强剂。基于自适应乙状结肠函数的双柱状图均衡图像增强
完整代码,可直接运行
图像处理,将彩色图像换算成灰度图像,求出灰度值,并增强图像的灰度。
【图像增强】基于区域相似变换函数和蜻蜓算法的灰度图像增强.md
包含14个灰度图像增强PPT,1个彩色图像增强综述PPT,供大家学习使用。
为提高图像增强的自适应性,首先将细菌的自适应趋向因子引入到细菌觅食算法中,然后将提升的细菌觅食算法和非完全Beta函数结合而去获得最佳的灰度变换参数,最终实现对降质图像的最大程度的自适应增强。仿真实验结果...
VC++6.0在灰度数字图像增强处理中的应用
对图像进行灰度变化,高频低频图像通过,椒盐和高斯噪声加噪的变换
智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真代码
这一份使用matlab语言编写的分段线性直方图红外图像(灰度图像)增强算法,可以实现8位、14位、16位的灰度图像或者红外图像的增强、拉伸、均衡,在过曝光、曝光不足,以及强光类型的灰度图像,均有良好的效果。...
项目请参见:... 使用乘法运算增强人体骨骼图像,原图像中的人体骨骼很难看清,有必要将图像和一个常量相乘以扩展其灰度级,从而增强图像的亮度和对比度。 项目可直接运行~
新的增强图像灰度方法!经过反 Gamma 校正后的低灰度级图像,在图像进行反 Gamma校正后,根据图像原始灰度与二进制编码灰度之差建立浮动灰度编码
灰度扩展(图像增强)
变灰度灰度平均值,傅里叶变换、反变换,灰度图像增强
【图像增强】基于频域+密度分割+灰度级-彩色变换实现伪彩色图像增强含Matlab源码
VC_6_0在灰度数字图像增强处理中的应用