【matlab 图像处理】图像锐化
图像锐化
对人眼视觉系统的研究表明,人类对形状的感知一般通过识别边缘、轮廓、前景和背景而形成。在图像处理中,边缘信息也十分重要。边缘是图像中亮度突变的区域,通过计算局部图像区域的亮度差异,从而检测出不同目标或场景各部分之间的边界,是图像锐化,图像分割、区域形状特征提取等技术的重要基础。图像锐化(Image Sharpening)的目的是加强图像中景物的边缘和轮廓,突出图像中的细节或增强被模糊了的细节。
非肤色初步过滤
对非肤色部分进行初步过滤
function Out=FirstFilter(In) % 第一次滤波Out=In;[height,width,c] = size(In); % 获取输入图像尺寸信息IR=In(:,:,1); IG=In(:,:,2);IB=In(:,:,3); % 分别获取三个通道for j=1:heightfor i=1:widthif (IR(j,i)<160/255 && IG(j,i)<160/255 && IB(j,i)<160) && (IR(j,i)>IG(j,i) && IG(j,i)>IB(j,i)) % 分别查看各像素点IR IB IG根据取值复制相应像素点值 Out(j,i,:)=0; % 赋值0endif IR(j,i)+IG(j,i)>500/255 % IG + IR 值大于500/255 时置输出值为0Out(j,i,:)=0;endif IR(j,i)<70/255 && IG(j,i)<40/255 && IB(j,i)<20/255Out(j,i,:)=0;endendendfigure,imshow(Out);title('非肤色初步过滤');
end
YCgCr空间范围肤色检测
将RGB颜色模型转化为YCgCr颜色模型,使用中值滤波对图像进行中值滤波
function Out=SecondFilter(In) % 第二次滤波IR=In(:,:,1); IG=In(:,:,2);IB=In(:,:,3); [height,width,c] = size(In); % 获取图像sizeOut=zeros(height,width); % 根据size创建空矩阵for i=1:widthfor j=1:height R=IR(j,i); G=IG(j,i); B=IB(j,i); % R G B 赋值Cg=(-81.085)*R+(112)*G+(-30.915)*B+128; % 颜色模型转换Cr=(112)*R+(-93.786)*G+(-18.214)*B+128; if Cg>=85 && Cg<=135 && Cr>=-Cg+260 && Cr<=-Cg+280 % 根据转换颜色模型后 各值的大小得输出Out(j,i)=1; % 对像素值赋值1endendendOut=medfilt2(Out,[3 3]); % 中值滤波 中值滤波medfilt2,用法是B = medfilt2(A, [m n]),输入图像A应是二维矩阵,% 程序中输入图像h是由imread得到的I加上噪声得到的,而imread读到的图像I通常是3维RGB图,% 是三维矩阵,因此才出现问题,显示A应该为二维的。figure,imshow(Out),title('YCgCr空间范围肤色检测'); % 输出图像
end
肤色与背景图像融合
ImageOrigin(双精度化后图像),DBImage(双边滤波后图像),SkinArea(YCgCr空间范围肤色检测处理后图像)
使用三种分别处理图像进行融合计算
function Out=Fuse(ImageOrigin,DBImage,SkinArea)Skin=zeros(size(ImageOrigin)); % 创建与ImageOrigin的size相等的空矩阵Skin(:,:,1)=SkinArea; % 通道赋值Skin(:,:,2)=SkinArea; Skin(:,:,3)=SkinArea;Out=DBImage.*Skin+double(ImageOrigin).*(1-Skin); % 输出图像计算公式figure,imshow(Out);title('肤色与背景图像融合'); % 输出肤色检测图像
end
双边滤波
双边滤波器用于平滑图像并减少噪声,同时保留边缘,是一种非线性双边滤波器。双边滤波的核函数是空间域核与像素范围域核的综合结果:
- 在平坦区域,临近像素的像素值的差值较小,对应值域权重接近于1,此时空域权重起主要作用,相当于直接对此区域进行高斯模糊。因此,平坦区域相当于进行高斯模糊。
- 在边缘区域,临近像素的像素值的差值较大,对应值域权重接近于0,导致此处核函数下降(因),当前像素受到的影响就越小,从而保持了原始图像的边缘的细节信息。
总体而言,在像素强度变换不大的区域,双边滤波有类似于高斯滤波的效果,而在图像边缘等强度梯度较大的地方,可以保持梯度。
function Out=DBfilt(In)[height,width,c] = size(In); % 获取输入相关参数 高 宽 通道win=15; % 定义双边滤波窗口宽度 sigma_s=6; sigma_r=0.1; % 双边滤波的两个标准差参数 [X,Y] = meshgrid(-win:win,-win:win); % 生成二维网格矩阵Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2)); % 计算邻域内的空间权值 Out=zeros(height,width,c); % 生成相关参数的空矩阵for k=1:cfor j=1:height for i=1:width temp=In(max(j-win,1):min(j+win,height),max(i-win,1):min(i+win,width),k);Gr = exp(-(temp-In(j,i,k)).^2/(2*sigma_r^2)); % 计算灰度邻近权值 % W为空间权值Gs和灰度权值Gr的乘积 W = Gr.*Gs((max(j-win,1):min(j+win,height))-j+win+1,(max(i-win,1):min(i+win,width))-i+win+1); % Gs * Gr Out(j,i,k)=sum(W(:).*temp(:))/sum(W(:)); endend endfigure,imshow(Out),title('双边滤波');
end
拉普拉斯锐化算子
拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。我们知道,一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。那么据此我们可以猜测出依据二阶微分能够找到图像的色素的过渡程度,例如白色到黑色的过渡就是比较急剧的。
- 或者用官方点的话说:当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。
应用:
- 运用拉普拉斯可以增强图像的细节,找到图像的边缘。但是有时候会把噪音也给增强了,那么可以在锐化前对图像进行平滑处理。
function Out=Sharp(In)H=[0 -1 0;-1 5 -1;0 -1 0]; %Laplacian锐化模板 拉普拉斯算子Out=imfilter(In,H); % 拉普拉斯算子锐化滤波% Out=Out/3+In; % 输出值/3 + 输入值% imwrite(Out,'man4.jpg');figure,imshow(Out),title('Laplacia锐化图像');
end
【matlab 图像处理】图像锐化相关推荐
- matlab按图像边缘抠图_MATLAB--数字图像处理 图像锐化
一.实验名称 图像锐化 二.实验目的 1.熟悉MATLAB软件的使用. 2.掌握图像锐化的原理及数学运算. 3.于MATLAB环境下编程实现对图片锐化. 三.实验内容 利用图像基于单方向梯度算子,Ro ...
- matlab与数字图像处理--图像锐化imsharpen
在对图像进行锐化时,图像灰度变化之处将引入一段"过冲",和人眼视觉中的马赫带效应相同.可以理解图像锐化即是增强了人眼的马赫带效应. mat=zeros(300,500); mat( ...
- matlabrobert锐化_基于Matlab的图像锐化的研究
杨虹++吴萌 摘要:在图像处理时,常常需要对图像进行平滑,但是平滑后图像的轮廓往往变的有些模糊,为了改变这一影响,需要对图像进行锐化处理,使图像边缘信息呈现出来.对几种图像锐化的方法进行研究,并且对S ...
- MATLAB--数字图像处理 图像锐化
一.实验名称 图像锐化 二.实验目的 1.熟悉MATLAB软件的使用. 2.掌握图像锐化的原理及数学运算. 3.于MATLAB环境下编程实现对图片锐化. 三.实验内容 利用图像基于单方向梯度算子,Ro ...
- MATLAB--数字图像处理 图像锐化(纯代码篇)
图像锐化 概念: 图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类.图像锐化是为了突出图像上地物的边缘.轮廓, ...
- MATLAB图像处理——图像中余弦噪声去除(附代码)
图像中规则余弦噪声去除 问题描述 傅里叶变化 带阻滤波器 滤波 结果 改进 代码 问题描述 有以下增加噪声后的图像: 从图上可以明显看出在x方向上叠加了一正弦规律变化的噪声,要对其进行去噪处理,比较简 ...
- matlab图像处理图像的几种输出方法
1.一个图片的输出 imshow(g) 2.两个图片的并排输出 subplot(1,2,1) :1,2表示把这两个图按照一行两列的方式排列,最后一个1表示把这个图放在第一个位置上.(逗号括号可以不要) ...
- Matlab图像处理创新实践-实验3【图像锐化】
Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...
- 数字图像处理(五)——Matlab实现图像的边缘锐化及各种算子的比较
实验内容 基于单方向梯度算子,Robert算子,Sobel算子,Priwiff算子,Laplacian算子,多方向模板,LOG算子编写matlab增强程序 最后,显示边缘图像和锐化增强图像,并对这些仿 ...
- TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验三 图像平滑与图像锐化
文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验三 图像平滑与图像锐化 实验要求 知识点 实验内容 1.采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3 ...
最新文章
- 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array...
- idea与mysql连接时,遇见的小问题
- CloudStack那些事儿2 : 主存储与二级存储
- 教你如何成为数据科学家(六)
- 【Python基础】Python开发环境设置和小技巧
- sys_connect_by_path
- iframe嵌入页面白屏_封闭在家学网页制作!为页面嵌入PDF文件——零基础自学网页制作
- IDEA+Maven:cannot download sources
- 程序语言python如何抓取信息_python中系统信息获取psutil使用详解
- Map 集合的循环遍历 4 种方式
- 蓝桥杯ALGO-147算法训练 4-3水仙花数
- Java Script 第09章 Ajax应用
- NodeJS+七牛云实现图片上传
- gwt - inherit module问题
- 错误码errno和perror函数
- 贝尔数C语言,bzoj 3501 PA2008 Cliquers Strike Back——贝尔数
- spark日志中 Tid是什么
- beta阶段贡献分配实施
- Burp Suite进行账号密码爆破
- win10如何打开计算机端口,win10系统开启计算机端口的操作方法
热门文章
- Python数据分析-房价的影响因素图解
- 厘米换算英尺英寸java
- (long)123是c语言常量吗,C语言常量与变量
- 实现Excel实现下拉框选择对应的数据(数据验证)
- win10磁盘分区合并(win10磁盘分区合并c盘时扩展卷点不开)
- 计算机文件右击怎么显示打开方式,怎么删除Win10文件右键菜单打开方式中已卸载程序选项?...
- 关于粒子群算法的两种惯性权重
- Windows 10 下,强制关闭端口
- 热点的ap频段哪个快_热点ap频段有什么区别
- SpringBoot+Vue批量下载图片压缩包