用matlab时,怎样为一幅图像的每个点划分一个邻域阿?利用循环还是有特定函数?

用matlab时,怎样为一幅图像的每个点划分一个邻域阿?利用循环还是有特定函数?,第1张

只可以用循环吧

for i =1:nRow %row

for j = 1:nColumn %column

nClique = [i-1 ji+1 ji j-1i j+1]%定义邻域

idx = find(nClique(:,1)>=1 &nClique(:,1)<=nRow &nClique(:,2)>=1 &nClique(:,2)<=nColumn)%对邻域的下标做判断是否出界

nClique = nClique(idx,:)%把领域取出来。

end

end

(1)在输入图像中定义一个参考点:f(x0, y0)。

(2)执行一个 *** 作(如卷积),仅包含输入图像中一个围绕参考点邻域的像素

(3)将 *** 作的结果用于输出图像中具有相同坐标的像素:g(x0, y0)。

(4)对输入图像中的每个像素重复上述过程。

在后面的介绍中,我们主要划分为两类:

(1)线性滤波器:结果像素的输出是原始图像中,像素邻域里像素值和模板系数乘积的和。如:均值滤波器,卷积。

(2)非线性滤波器:结果像素的输出是在原始图像中,像素邻域里对像素值排序而选出来的。如:中值滤波器。

以上是本期内容,建议自己动手来实践一下。如果需要图片和代码,可以关注公众号,回复关键字【matlab代码】即可获得。我会上传到云盘。

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍图像处理的卷积和相关。

close allclear allclc

以MATLAB附带的图像pout.tif为例实现上述过程:

I = im2double(imread('pout.tif'))

fun = @(block_struct) mean2(block_struct.data)

I1 = blockproc(I, [3, 3], fun)

figure

subplot(121), imshow(I)

subplot(122), imshow(I1)

B=blockproc(A, [m,n], fun):该函数对输入图像A,采用大小为m*n的分离块,利用函数fun处理,处理后的结果连接成输出图像B。其中fun是函数句柄,该函数输入为结构体,返回矩阵,向量或变量。

扩展资料

图像的区域选取

BW = roipoly(I) 显示当前灰度或RGB图像I,并创建与当前图像I相关的交互式多边形ROI区域选择工具

BW = roipoly(I,xi,yi) 根据xi和yi返回感兴趣的区域ROI。其中,xi和yi说明感兴趣的多边形各个顶点行列序号,xi和yi两个向量大小相同

BW = roipoly(x,y,I,xi,yi) 根据向量x和y建立一个空间坐标系,根据xi和yi在x和y坐标系下定义的多边形顶点选择输入图像I的ROI区域

[BW,xi2,yi2] = roipoly(___) 返回x和y坐标系下感兴趣区域的顶点坐标xi和yi


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11952626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存