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("梯度运算的图像");

相关文章
|
6月前
Laplacian(拉普拉斯)边缘检测
【6月更文挑战第7天】Laplacian(拉普拉斯)边缘检测。
93 1
|
6月前
Sobel边缘检测
【6月更文挑战第7天】Sobel边缘检测。
45 1
|
7月前
|
机器学习/深度学习 计算机视觉
均值滤波
【5月更文挑战第15天】均值滤波。
44 1
|
7月前
|
资源调度 API 计算机视觉
【OpenCV】—非线性滤波:中值滤波、双边滤波
【OpenCV】—非线性滤波:中值滤波、双边滤波
|
7月前
|
存储 编解码 资源调度
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
346 2
|
7月前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测
|
机器学习/深度学习 传感器 算法
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
常见滤波(高斯滤波、均值滤波等)的简单理解
常见滤波(高斯滤波、均值滤波等)的简单理解
127 0
|
算法 API 计算机视觉
OpenCV_08 边缘检测:Sobel检测算子+Laplacian算子+Canny边缘检测
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。
343 0
|
资源调度 算法 API
OpenCV_06 图像平滑:图像噪声+图像平滑+滤波
由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。
140 0