Matalb-图像均值滤波,中值滤波,梯度锐化(sobel算子)的实现

简介: Matalb-图像均值滤波,中值滤波,梯度锐化(sobel算子)的实现

1.均值滤波

clc;clear all;
img = imread('C:\Users\lihuanyu\Desktop\opencv\image\lenaNoise.png');
figure;
imshow(img),title("原图像");
img_R = img(:,:,1);
img_G = img(:,:,2);
img_B = img(:,:,3);
%纵,横,通道数
[ROW,COL,DIM] = size(img);
%构造(3,3)的矩阵
R = zeros(ROW,COL);
G = zeros(ROW,COL);
B = zeros(ROW,COL);
funBox = zeros(3,3);
for i = 1:ROW - 2
    for j = 1:COL - 2
        funBox = img_R(i:i+2,j:j+2);
        s = sum(funBox(:))/9;
        R(i+1,j+1) = s;
        funBox = img_G(i:i+2,j:j+2);
        s = sum(funBox(:))/9;
        G(i+1,j+1) = s;
        funBox = img_B(i:i+2,j:j+2);
        s = sum(funBox(:))/9;
        B(i+1,j+1) = s;
    end;
end;
img_filter(:,:,1) = R/255;
img_filter(:,:,2) = G/255;
img_filter(:,:,3) = B/255;
figure(2);
imshow(img_filter),title("均值滤波后的图像");

2. 中值滤波

clc;clear all;
img = imread('C:\Users\lihuanyu\Desktop\opencv\image\lenaNoise.png');
figure;
imshow(img),title("原图像");
img_R = img(:,:,1);
img_G = img(:,:,2);
img_B = img(:,:,3);
%纵,横,通道数
[ROW,COL,DIM] = size(img);
%构造(3,3)的矩阵
R = zeros(ROW,COL);
G = zeros(ROW,COL);
B = zeros(ROW,COL);
funBox = zeros(3,3);
for i = 1:ROW - 2
    for j = 1:COL - 2
        funBox = img_R(i:i+2,j:j+2);
        s = sort(funBox(:));
        R(i+1,j+1) = s(5);
        funBox = img_G(i:i+2,j:j+2);
        s = sort(funBox(:));
        G(i+1,j+1) = s(5);
        funBox = img_B(i:i+2,j:j+2);
        s = sort(funBox(:));
        B(i+1,j+1) = s(5);
    end;
end;
img_filter(:,:,1) = R/255;
img_filter(:,:,2) = G/255;
img_filter(:,:,3) = B/255;
figure(2);
imshow(img_filter),title("中值滤波后的图像");

3. 梯度锐化(sobel算子)

clc;clear all;
img = imread('C:\Users\lihuanyu\Desktop\opencv\image\lena256.bmp');
figure;
imshow(img),title("原图像");
[ROW,COL] = size(img);
img = double(img);
new_img = zeros(ROW,COL); %新建画布
sobel_x = [-1,0,1;-2,0,2;-1,0,1];
sobel_y = [-1,-2,-1;0,0,0;1,2,1];
for i = 1:ROW - 2
    for j = 1:COL - 2
        funBox = img(i:i+2,j:j+2);
        G_x = sobel_x .* funBox;
        G_x = abs(sum(G_x(:)));
        G_y = sobel_y .* funBox;
        G_y = abs(sum(G_y(:)));
        sobelxy  = G_x * 0.5 + G_y * 0.5;
%带有截距的锐化(二值化)
%         if (sobelxy > 150)
%             sobelxy = 255;
%         else
%             sobelxy = 0;
%         end
        new_img(i+1,j+1) = sobelxy;
    end
end
figure(2);
imshow(new_img/255),title("梯度运算的图像");

相关文章
|
存储 Java
java集合框架------Map接口与实现类
java集合框架------Map接口与实现类
166 0
西门子S7-200 SMART如何使用状态图表,如何创建、监视、强制、趋势显示
上篇文章中我们学习了S7-200 SMART系统块的组态,本篇我们来介绍在编程软件STEP7-Micro/WIN SMART中如何使用状态图表,以及如何创建、监视、强制、趋势显示。在STEP7-Micro/WIN SMART与PLC之间成功建立通信,并且将程序下载到PLC后,就可以监控和调试程序了。程序状态监控可以监视程序的运行情况,但是如果需要监控的变量较多,不能在程序编辑器中同时显示的时候就需要使用状态图表监控。接下来我们来介绍在STEP7-Micro/WIN SMART如何使用状态图表监控和调试程序。
西门子S7-200 SMART如何使用状态图表,如何创建、监视、强制、趋势显示
STM32CubeMX FreeRTOS 互斥锁
STM32CubeMX FreeRTOS 互斥锁
827 12
|
Dart 前端开发 JavaScript
移动应用开发的未来趋势:跨平台框架的崛起
随着移动设备的普及和技术的发展,移动应用开发领域正在经历一场革命。传统的原生应用开发模式正逐渐让位于更为灵活、高效的跨平台框架。本文将探讨跨平台框架的优势、挑战以及它们如何改变移动应用开发的生态。 【7月更文挑战第28天】
246 4
|
TensorFlow 算法框架/工具 Python
最新版tensorflow安装教程,pip安装+手动安装
最新版tensorflow安装教程,pip安装+手动安装
6739 1
|
机器学习/深度学习 存储 测试技术
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
|
Java Spring
Javaweb之SpringBootWeb案例之AOP通知顺序的详细解析
Javaweb之SpringBootWeb案例之AOP通知顺序的详细解析
251 0
|
XML JavaScript Java
Java一分钟之-XML解析:DOM, SAX, StAX
Java中的XML解析包括DOM、SAX和StAX三种方法。DOM将XML加载成内存中的树形结构,适合小文件和需要随意访问的情况,但消耗资源大。SAX是事件驱动的,逐行读取,内存效率高,适用于大型文件,但编程复杂。StAX同样是事件驱动,但允许程序员控制解析流程,低内存占用且更灵活。每种方法都有其特定的易错点和避免策略,选择哪种取决于实际需求。
725 0
|
安全 Unix 程序员
Python 标准类库-并发执行之multiprocessing-基于进程的并行 1
Python 标准类库-并发执行之multiprocessing-基于进程的并行
405 1