基于Matlab的图片平滑和锐化处理

2024-04-17 17:32

本文主要是介绍基于Matlab的图片平滑和锐化处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在本实验中我分别采用了系统自带的fspecial函数和自己编写的均值平滑模板和两个锐化模板进行图片处理。

目录

空间域平滑增强

空间域锐化增强


空间域平滑增强

实验要求:采用均值平滑模板对图片进行处理,得到去除噪声后的图像,并使用平滑模板滤波2-3次,比较实验结果。

使用Matlab自带函数 fspecial() 的average模式:

clc;
clear;
close all;%使用自带函数
Picture=imread('lena_noise.bmp');
subplot(1,4,1);imshow(Picture,[]);title('原图');
Tem_Smooth=fspecial('average',[3,3]);
P_Smooth1=imfilter(Picture,Tem_Smooth);
subplot(1,4,2);imshow(P_Smooth1,[]);title('均值滤波一次后图像');
P_Smooth2=imfilter(P_Smooth1,Tem_Smooth);
subplot(1,4,3);imshow(P_Smooth2,[]);title('均值滤波二次后图像');
P_Smooth3=imfilter(P_Smooth2,Tem_Smooth);
subplot(1,4,4);imshow(P_Smooth3,[]);title('均值滤波三次后图像');

自己编写均值滤波函数:

function F=averfilter(x,n) %x为输入的图像,n为均值模板大小(n×n)
a(1:n,1:n)=1;
[height,width]=size(x);
x1=double(x); %将图像信息流设为double格式
x2=x1;
for i=1:height-n+1   %由于是在n×n大小的像素组中从最左上角的开始计算,因此在范围限制上去除最后两行for j=1:width-n+1  %去除最后两列b=x1(i:i+(n-1),j:j+(n-1)).*a;s=sum(sum(b));x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %在n×n大小的空间内的中心像素被赋值end
end
F=uint8(x2);%将信息范围强制转换为0-255内

与系统自带函数进行结果比对:

上面一行为fspecial()的average格式下的处理结果,下面一行为自己编写的均值滤波函数的处理结果。效果还行,只是对比度比fspecial函数处理后的稍低一些。

 

空间域锐化增强

实验要求:分别采用一阶微分算子Sobel算子和二阶微分算子拉普拉斯算子进行锐化滤波,并比较两种不同的锐化滤波模板处理后的结果。

Sobel算子拉普拉斯算子

 使用系统自带函数 fspecial() 的 sobel 和 laplacian 模式:

figure;
Picture2=imread('moon.bmp');
subplot(1,3,1);imshow(Picture2,[]);title('原图');
Tem_Sharpen1=fspecial('sobel');
P_Sharpen1=imfilter(Picture2,Tem_Sharpen1);
subplot(1,3,2);imshow(P_Sharpen1,[]);title('采用sobel算子锐化后图像');
Tem_Sharpen2=fspecial('laplacian');
P_Sharpen2=imfilter(Picture2,Tem_Sharpen2);
subplot(1,3,3);imshow(P_Sharpen2,[]);title('采用拉普拉斯算子锐化后图像');

 自己编写Sobel算子锐化模板函数:

function F=Sobelfilter(x)
a=[-1,-2,-1;0,0,0;1,2,1];  %Sobel算子第一个3×3矩阵
b=[-1,0,1;-2,0,2;-1,0,1];  %Sobel算子第二个3×3矩阵
[height,width]=size(x);
x1=double(x);
x2=x1;
for i=1:height-3+1for j=1:width-3+1c=x1(i:i+(3-1),j:j+(3-1)).*a;d=x1(i:i+(3-1),j:j+(3-1)).*b;x2(i:i+(3-1),j:j+(3-1))=sqrt(c^2+d^2);  %一般赋值两个矩阵相乘结果平方的开方end
end
F=uint8(x2);

自己编写的Laplacian算子锐化模板函数:

function B=LaplacianFilter(x)
x=im2double(x);
[height,width]=size(x);
B=zeros(size(x));
for i=2:height-1    %在编写这个函数时以最中心位置的像素为基准x(i,j),因此范围从第2行第2列变换到倒数第二行和倒数第二列for j=2:width-1B(i,j)=-x(i+1,j)-x(i-1,j)-x(i,j+1)-x(i,j-1)+8*x(i,j)-x(i-1,j-1)-x(i-1,j+1)-x(i+1,j-1)-x(i+1,j+1);      %直接进行矩阵相乘end
end
B=im2uint8(B);

实验结果比对:

上面一行为fspecial()的处理结果,下面一行为自己编写的滤波函数的处理结果。

 另外我采用上面的laplacian算子函数的编写方法另外写了Sobel算子的锐化模板函数,处理结果如下,与fspecial函数处理结果有较大差别,因此并未采用。

function C=Sobel(x)
x=double(x);
[height,width]=size(x);
B=zeros(size(x));
C=zeros(size(x));
for i=2:height-1for j=2:width-1B(i,j)=-x(i-1,j-1)-2*x(i-1,j)-x(i-1,j+1)+x(i+1,j-1)+2*x(i+1,j)+x(i+1,j+1);C(i,j)=-B(i-1,j-1)+B(i-1,j+1)-2*B(i,j-1)+2*B(i,j+1)-B(i+1,j-1)+B(i+1,j+1);end
end
C=uint8(C);

这篇关于基于Matlab的图片平滑和锐化处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912426

相关文章

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.