Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用matlab求图像的平均绝对偏差_Matlab_Image Processing_Mean_Image Recognition - Fatal编程技术网

如何用matlab求图像的平均绝对偏差

如何用matlab求图像的平均绝对偏差,matlab,image-processing,mean,image-recognition,Matlab,Image Processing,Mean,Image Recognition,如果我有这个尺寸为240x180的图像,我想用Matlab找到每个子图像(20x20)与原始图像的平均绝对偏差(MAD),因此我必须在最后提取108个结果,我知道MAD的概念,通过查找每个20x20子像素的平均值,然后查找每个像素和计算平均值之间差值的绝对值之和 我开始制作一些东西,用这个dim(20x20)将图像(240x180)分割成子图像,我必须有108个子图像,但结果只包含84个块,我不知道为什么,您可以查看以下代码: >> I = imread('myimage-path'

如果我有这个尺寸为240x180的图像,我想用Matlab找到每个子图像(20x20)与原始图像的平均绝对偏差(MAD),因此我必须在最后提取108个结果,我知道MAD的概念,通过查找每个20x20子像素的平均值,然后查找每个像素和计算平均值之间差值的绝对值之和

我开始制作一些东西,用这个dim(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 

可能在这种情况下,您可以使用不同的块处理功能

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

保重

我想当你在第二个循环中划分时
kk=kk+(r/bs)
(r/bs)
给出了一些
r
bs
的四舍五入值,因此没有按照应该的方式将
k的值相加

我开始将图像分割为子图像,就像上面的代码一样,我只得到了84个块,但我应该有108个块,我不知道在这种情况下会出现什么问题