计算每个像素处的灰度图像的标准偏差

时间:2019-02-15 20:51:18

标签: image matlab image-processing computer-vision

以下是家庭作业问题的一部分:

计算一个矩阵,该矩阵在每个像素处保留灰度图像的标准偏差(即X(i,j)在第i列j列的所有图像的灰度像素强度下保持标准偏差)。

我有(或相信我有)灰度的平均图像。我也有彩色的平均图像,但认为与这个问题无关。我知道标准差要求我仔细总结一下每个值和平均值之间的差,但不确定如何达到此标准。

% Matrix initialization
setsum1 = zeros(215, 300, 3, 'double');
% Loop through all the image files in one directory and store in the matrix
filelist = dir('set1\*.jpg');
for i=1:length(filelist)
imname = ['\set1\' filelist(i).name];
nextim = imread(imname);
setsum1 = setsum1 + im2double(nextim);
end
% Compute the average image in color
setsum1_rgb = setsum1./length(filelist);
% Compute the average image in grayscale
setsum1_gray = rgb2gray(setsum1_rgb);
% grayscale images’ standard deviation at each pixel
deviation_setsum1_gray = sqrt(sum(power(??? - setsum1_gray, 2)));

我正在尝试找出如何代替???。朝着正确方向提出的建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您已经计算出平均图像。但是,如果要计算标准偏差,则必须记住所有图像上的所有图像强度。请记住,标准偏差定义为每行和每列位置的图像强度与该位置的平均强度之间的平方差之和的平方根除以该图像的数量再减去1。因此,建议您存储将图像作为4D矩阵,其中第四维表示每个图像的颜色版本。我们还需要有另一个相似的变量,但它将是一个3D矩阵,该矩阵将存储三维空间中每个图像的灰度版本。之后,我们最终可以计算每个空间位置的标准偏差。您甚至可以在第三维中使用std函数,因此甚至不需要使用平均图像,但是我假设您必须自己执行此操作。

假设您不能使用<?php my_custom_header(); ?> ,则可以使用以下方法:

std