【问题标题】:How I can find Mean Absolute Deviation for image by matlab如何通过 matlab 找到图像的平均绝对偏差
【发布时间】:2016-07-06 14:28:09
【问题描述】:

如果我有这个尺寸为 240x180 的图像,并且我想使用 Matlab 从原始图像中找到每个子图像 (20x20) 的平均绝对偏差 (MAD),所以我必须在最后提取 108 个结果,我知道MAD 的概念是通过为每个 20x20 子像素求均值,然后求出每个像素与计算均值之差的绝对值之和。

我开始用这个暗淡(20x20)将图像(240x180)划分为子图像,我必须有108个子图像但结果只包含84个块我不知道为什么,你可以看看到以下代码:

>> I = imread('myimage-path')
>> %the size of image 180x240
>> [r,c] = size(I);
>> bs = 20; % size of block
>> nsb = (r/bs) * (c/bs); % total number of block ( 108 block )
>> %Dividong the image into 20x20 block 
>> kk=0;
>> for i=1:(r/bs)
  for j=1:(c/bs)
    Block(:,:,kk+j)=I((bs*(i-1)+1:bs*(i-1)+bs),(bs*(j-1)+1:bs*   (j-1)+bs));
  end
  kk=kk+(r/bs);
  end

然后我定义了一个空数组来存储这个数组中的所有 108 个块,以完成我在这些块上的工作

>> allBlocks = [[],[],[]]
>> for h=1:84
allBlocks(:,:,h) = Block(:,:,h);
end

>> size(allBlocks)
>> % result 20 20 84 

【问题讨论】:

    标签: matlab image-processing mean image-recognition


    【解决方案1】:

    在这种情况下你可以使用 Distinct 块处理函数

    【讨论】:

      【解决方案2】:

      以这种方式看待这个问题!
      1.创建一个函数MAD(接受一个iamge)
      2. 制定 2 个循环,将窗口(或子图像或模板)传递给您的函数。您可以使用 : 运算符为您的子图像提供范围。
      3. 您可以制定一个 3-D 数组来存储尺寸为 20x20X180 的输出。
      4. 祝你好运!!
      保重!!

      【讨论】:

      • 我开始像帖子中的上述代码一样将图像划分为子图像,我只得到 84 块但我应该有 108 块我不知道在这种情况下有什么问题跨度>
      【解决方案3】:

      我认为当您在第二个循环中进行划分时 kk=kk+(r/bs) (r/bs) 给出了一些 rbs 的舍入值,因此不会以应有的方式累加 k 的值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        • 2021-04-19
        • 1970-01-01
        • 2015-07-03
        • 2012-02-14
        • 2018-12-28
        • 2020-06-08
        相关资源
        最近更新 更多