您的位置:首页 > 文旅 > 旅游 > 珠海关键词优化收费_歌尔股份砍单_seo入门教程视频_关键词自动优化工具

珠海关键词优化收费_歌尔股份砍单_seo入门教程视频_关键词自动优化工具

2024/12/23 15:07:44 来源:https://blog.csdn.net/xrgs_shz/article/details/144206404  浏览:    关键词:珠海关键词优化收费_歌尔股份砍单_seo入门教程视频_关键词自动优化工具
珠海关键词优化收费_歌尔股份砍单_seo入门教程视频_关键词自动优化工具

一、前言

        imfilter 是 MATLAB 中用于图像滤波的函数,可以用于对图像进行卷积操作,从而实现各种滤波效果,如平滑、锐化、边缘检测等。以下是 imfilter 函数的基本使用方法,以及一个具体的滤波后边缘检测实例。

二、imfilter 函数基本用法

B = imfilter(A, h) 使用多维滤波器 h 对多维数组 A 进行滤波,并在 B 中返回结果。

A 是输入图像,可以是灰度图像或彩色图像。

H 是滤波核(也称为卷积核或掩模),是一个二维矩阵。

B 是滤波后的输出图像。

B = imfilter(A,h,options,...) 根据一个或多个指定的选项执行多维滤波。

     可选参数--imfilter 还提供了一些可选参数来控制边界处理、数据类型等。例如:第三个参数 ’replicate' 指定了边界像素的外推方式。其他选项包括 'symmetric', 'circular', 以及默认的 'zero' 等。

三、边缘检测实例

实例一:

clear all;

close all;

clc;

% 定义一个矩形图像

img=50*ones(100,100);

img(40:60,40:60)=200;

figure,imshow(img,[]);

% 定义Sobel算子

sobel_x = [-1 0 1;

           -2 0 2;

           -1 0 1];

sobel_y = [-1 -2 -1;

            0  0  0;

            1  2  1];

% 应用Sobel算子

edge_x = imfilter(double(img), sobel_x, 'replicate');%'replicate'数组边界之外的输入数组值假定为等于最近的数组边界值

edge_y = imfilter(double(img), sobel_y, 'replicate');

% 计算梯度幅值

edge_magnitude = sqrt(edge_x.^2 + edge_y.^2);

% 将结果归一化到0-255范围并转换为uint8类型

edge_magnitude = uint8(255 * mat2gray(edge_magnitude));

% 显示原始图像和边缘检测结果

figure;

subplot(1, 2, 1);

imshow(img,[]);

title('原始图像');

subplot(1, 2, 2);

imshow(edge_magnitude,[]);

title('Sobel算子边缘检测图像');

figure,imhist(edge_magnitude);

edgeBW=im2bw(edge_magnitude,graythresh(edge_magnitude));

figure,imshow(edgeBW);

edgeBW2=bwmorph(edgeBW,'thin');%对边缘图像进行细化

figure,imshow(edgeBW2),title('边缘细化');

实例二:

clear all;
close all;
clc;
img = imread('rice.png');%读取MATLAB自带图像rice.png
% 如果图像是彩色的,则将其转换为灰度图像
if size(img, 3) == 3
    img = rgb2gray(img);
end
% 定义Sobel算子
sobel_x = [-1 0 1; -2 0 2; -1 0 1];
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1];

% 应用Sobel算子
edge_x = imfilter(double(img), sobel_x, 'replicate');
edge_y = imfilter(double(img), sobel_y, 'replicate');
% 计算梯度幅值
edge_magnitude = sqrt(edge_x.^2 + edge_y.^2);
% 使用mat2gray将edge_magnitude归一化到0-255范围并转换为uint8类型
edge_magnitude = uint8(255 * mat2gray(edge_magnitude));
rice_edge=im2bw(edge_magnitude);
% 显示原始图像、滤波增强图像和边缘检测
figure;
subplot(1, 3, 1),imshow(img),title('原始图像');
subplot(1, 3, 2),imshow(edge_magnitude),title('Sobel边缘增强');
subplot(1,3,3),imshow(rice_edge),title('大米图像边缘');

四、实例一和实例二主要运行结果

      

       如果大家觉得本文对大家学习和科研有所帮助,请收藏、点赞和关注,欢迎转发!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com