相关疑难解决方法(0)

Matlab快速邻居操作

我有个问题.我有一个矩阵A,其整数值介于0和5之间,例如:

x=randi(5,10,10)
Run Code Online (Sandbox Code Playgroud)

现在我想调用一个大小为3x3的过滤器,这给了我最常见的值

我试过2个解决方案:

fun = @(z) mode(z(:));
y1 = nlfilter(x,[3 3],fun);
Run Code Online (Sandbox Code Playgroud)

这需要很长时间......

和

y2 = colfilt(x,[3 3],'sliding',@mode);
Run Code Online (Sandbox Code Playgroud)

这也需要很长时间.我有一些非常大的矩阵,两种解决方案都需要很长时间.有没有更快的方法?

matlab filter

5
推荐指数
1
解决办法
1673
查看次数

如何使用matlab进行圆形裁剪?

我通常imcrop用来裁剪rectanguler图像,但我想创建圆形裁剪.怎么做?

我知道有关于此的另一个问题,这里的链接:

  1. MATLAB:如何从图像中裁剪出圆圈

    [xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2));
    mask = (xx.^2 + yy.^2)<ci(3)^2;
    
    Run Code Online (Sandbox Code Playgroud)

    结果imshow(mask)是带有白色背景的矩形

  2. 在MATLAB中的一个点周围裁剪感兴趣的圆形区域

    错误 roimaskcc

  3. http://www.mathworks.com/matlabcentral/newsreader/view_thread/242489

    [xx,yy]=ndgrid(1:size(X,1), 1:size(X,2));
    CroppingMask= ( (xx-Xcenter).^2+(yy-Ycenter).^2<=Radius^2 );
    X=X.*CroppingMask;
    
    Run Code Online (Sandbox Code Playgroud)

    结果imshow(CroppingMask)是一个黑色背景的矩形,矩形中心有一个小的白色圆形.当我运行第3行时,它显示错误.

请一步一步帮助我,因为我是初学者.

这是我的形象:https://www.dropbox.com/s/5plqzqgyb1ej6gh/patricia.jpg.它的分辨率是480x640.

matlab image-processing

5
推荐指数
1
解决办法
2万
查看次数

获取矩阵元素的邻居

我有一个矩阵,我希望得到每个元素的周围元素的索引.所有这些结果必须以下列方式存储到矩阵中.矩阵的每一行对应于矩阵元素,并且该矩阵的每列包含邻居索引.例如,对于4x4矩阵,我们将得到一个16x8结果数组.一些矩阵元素没有8个邻居.

有一个例子,我认为它有效,我有什么方法可以避免循环?:

ElementNeighbors = [];
for n = 1:numel(Matrix)
    NeighborsMask = [ n-1 n+1 n+size(matrix,1) n-size(Matrix,1) n-size(Matrix,1)-1 n-size(Matrix,1)+1 ...
        n+size(Matrix,1)-1 n+size(Matrix,1)+1 ];

    ElementNeighbors = [ElementNeighbors ; NeighborsMask ];
end
ElementNeighbors (ElementNeighbors ==0|ElementNeighbors <0) = NaN;
Run Code Online (Sandbox Code Playgroud)

matlab

2
推荐指数
1
解决办法
5538
查看次数

标签 统计

matlab ×3

filter ×1

image-processing ×1