小编use*_*496的帖子

MATLAB:检测并删除2列矩阵中的镜像对

我有一个矩阵

[1 2
 3 6
 7 1
 2 1]
Run Code Online (Sandbox Code Playgroud)

并希望删除镜像对..输出将是:

[1 2
 3 6
 7 1] 
Run Code Online (Sandbox Code Playgroud)

要么

[3 6
 7 1 
 2 1]
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法吗?我可以想象一个复杂的for循环,类似于(或者一个不会删除原始对的版本......只有重复版本):

for i=1:y
    var1=(i,1);
    var2=(i,2);
    for i=1:y
        if array(i,1)==var1 && array(i,2)==var2 | array(i,1)==var2 && array(i,2)==var1
            array(i,1:2)=[];
        end
    end 
end
Run Code Online (Sandbox Code Playgroud)

谢谢

arrays matlab matrix vectorization detect

6
推荐指数
1
解决办法
200
查看次数

MATLAB:检测灰度图像中的非连续垂直条纹

在附图中,存在周期性垂直条纹,其沿x轴是随机的并且沿其y轴的强度变化.
有关如何检测这些的任何建议?
理想情况下,我想通过显示条纹的二进制图像的输出来检测这些(我想它最终会看起来像条形码).

谢谢!

在此输入图像描述

matlab image image-processing computer-vision image-segmentation

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

MATLAB:组合和归一化具有不同样本大小的直方图

我有四组数据,我想用一张图在 MATLAB 中表示它们的分布。当前代码是:

[n1,x1]=hist([dataset1{:}]);
[n2,x2]=hist([dataset2{:}]);
[n3,x3]=hist([dataset3{:}]);
[n4,x4]=hist([dataset4{:}]);
bar(x1,n1,'hist'); 
hold on; h1=bar(x1,n1,'hist'); set(h1,'facecolor','g')
hold on; h2=bar(x2,n2,'hist'); set(h2,'facecolor','g')
hold on; h3=bar(x3,n3,'hist'); set(h3,'facecolor','g')
hold on; h4=bar(x4,n4,'hist'); set(h4,'facecolor','g')
hold off 
Run Code Online (Sandbox Code Playgroud)

我的问题是我对每组有不同的抽样大小,数据集 1 的 n 为 69,数据集2 的 n 为 23,数据集 3 和数据集 4 的 n 为 10。那么,当将这三个组一起表示时,如何对分布进行归一化?

有什么方法可以..例如..通过该组的采样来划分每个 bin 中的实例?

matlab distribution normalize histogram bins

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

MATLAB:通过曲折度/弧长进行层检测、矢量组合和选择

我有一个类似于下面的灰度图像,这是我在一些后处理步骤后获得的(图像 0001)。我想要一个对应于下部亮条底部​​的向量(如图像 0001b 所示)。我可以使用具有各种阈值的 im2bw 来实现图像 0002 中的矢量(阈值越高,矢量线向上的趋势越高,阈值越低,线向下的趋势越高)..和然后我想通过每个向量并在某个增量(可能是 100 像素左右)上测量弧长并选择具有最低弧长的向量……并将 100 像素拉伸添加到最终向量中,创建一个类似弗兰肯斯坦的向量使用每个阈值向量中最直的段。

首先,我应该在这里采用一些更好的策略来找到图像 0001 上的那条线吗?(这需要很快,所以一些长拟合代码将不起作用)。如果我目前的弗兰肯斯坦怪物解决方案有效,关于如何最好地解决这个问题有什么建议吗?

提前致谢

image=im2bw(image,0.95); %or 0.85, 0.75, 0.65, 0.55
vec=[];
for v=1:x
    for x=1:z
        if image(c,v)==1
            vec(v)=c;
        end
    end
end
vec=fastsmooth(vec,60,20,1);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

matlab image vector

3
推荐指数
1
解决办法
372
查看次数

Python:仅在图像蒙版内执行模糊

我有一个灰度图像和该图像中 ROI 的二值掩模。我想对灰度图像执行模糊操作,但仅限于蒙版的范围内。现在我正在模糊整个图像,而不仅仅是删除蒙版之外的项目,但我不希望蒙版之外的像素影响我的投资回报率。有没有办法在不构建自定义模糊函数的情况下做到这一点?

希望有类似的东西:

import scipy
blurredImage = scipy.ndimage.filters.gaussian_filter(img, sigma = 3, weight = myMask)
Run Code Online (Sandbox Code Playgroud)

@斯特凡:

blur = 3
invmask = np.logical_not(mask).astype(int)

masked = img * mask
remaining = img * invmask

blurred = scipy.ndimage.filters.gaussian_filter(masked, sigma = blur)
blurred = blurred+remaining
Run Code Online (Sandbox Code Playgroud)

扩张方法:

blur = 3
invmask = np.logical_not(mask).astype(int)    
masked = img * mask
masked2 = scipy.ndimage.morphology.grey_dilation(masked,size=(5,5))
masked2 = masked2 *invmask
masked2 = masked + masked2
blurred = scipy.ndimage.filters.gaussian_filter(masked2, sigma = blur)
Run Code Online (Sandbox Code Playgroud)

python image-processing gaussian filter scipy

3
推荐指数
1
解决办法
3987
查看次数

列出数组中没有重复的所有值

假设我有一个100 x 100矩阵,由250s,125s,15s和9s的某种组合组成.我想返回此矩阵中所有唯一值的排序向量.

关于以下问题:

sort(somefunction(matrix))=vector 
Run Code Online (Sandbox Code Playgroud)

我想得到的结果是:

vector=9,15,125,250
Run Code Online (Sandbox Code Playgroud)

有没有快速简便的方法来做到这一点?

matlab vector unique matrix

0
推荐指数
1
解决办法
96
查看次数