Matlab:提取存储在单元格数组中的所有图像的i_th像素
Matlab: extrac i_th pixel of all images stored in a cell array
我有一个 image_data
元胞数组包含 400 张图像:
image_data = {img1, img2, ... img400}
每个图像,例如 img1
,都是一个 128 x 128
像素值数组:
img1 = [0.2, 0.5, .....]
我想获取存储在 image_data
中的所有图像的所有 i_th 像素,但 不使用 for 循环 。
例如:
image_data = {img1, img2, img3}
img1 = [0.1, 0.2, 0.3]
img2 = [0.4, 0.5, 0.6]
img3 = [0.7, 0.8, 0.9]
我想快速计算以下方差:
var([img1(1),img2(1),img3(1)]) = var([0.1,0.4,0.7])
var([img1(2),img2(2),img3(2)]) = var([0.2,0.5,0.8])
var([img1(3),img2(3),img3(3)]) = var([0.3,0.6,0.9])
尽量避免使用循环,因为它很慢。
第一步是通过沿第 3 维连接图像,将笨重的元胞数组转换为 3 维数组:
image_array = cat(3, image_data{:});
现在,我们所要做的就是使用下标从每个图像中获取第 ith 个像素的向量,并将其传递给 var
:
pixel_var = var(image_array(1,1,:)); % var for pixel 1
或者一次完成整个图像并索引到结果中:
image_var = var(image_array, 0, 3); % take var along 3rd dimension
只是添加到@beaker 的解决方案中。
img1 = [0.1, 0.2, 0.3];
img2 = [0.4, 0.5, 0.6];
img3 = [0.7, 0.8, 0.9];
image_data = {img1, img2, img3};
image_array = cat(1, image_data{:}) % concatinate the cell array to 2-d array
pix_array = var(image_array,0,1) % apply var() to all columns
我知道了:
image_array =
0.1000 0.2000 0.3000
0.4000 0.5000 0.6000
0.7000 0.8000 0.9000
pix_array =
0.0900 0.0900 0.0900
我有一个 image_data
元胞数组包含 400 张图像:
image_data = {img1, img2, ... img400}
每个图像,例如 img1
,都是一个 128 x 128
像素值数组:
img1 = [0.2, 0.5, .....]
我想获取存储在 image_data
中的所有图像的所有 i_th 像素,但 不使用 for 循环 。
例如:
image_data = {img1, img2, img3}
img1 = [0.1, 0.2, 0.3]
img2 = [0.4, 0.5, 0.6]
img3 = [0.7, 0.8, 0.9]
我想快速计算以下方差:
var([img1(1),img2(1),img3(1)]) = var([0.1,0.4,0.7])
var([img1(2),img2(2),img3(2)]) = var([0.2,0.5,0.8])
var([img1(3),img2(3),img3(3)]) = var([0.3,0.6,0.9])
尽量避免使用循环,因为它很慢。
第一步是通过沿第 3 维连接图像,将笨重的元胞数组转换为 3 维数组:
image_array = cat(3, image_data{:});
现在,我们所要做的就是使用下标从每个图像中获取第 ith 个像素的向量,并将其传递给 var
:
pixel_var = var(image_array(1,1,:)); % var for pixel 1
或者一次完成整个图像并索引到结果中:
image_var = var(image_array, 0, 3); % take var along 3rd dimension
只是添加到@beaker 的解决方案中。
img1 = [0.1, 0.2, 0.3];
img2 = [0.4, 0.5, 0.6];
img3 = [0.7, 0.8, 0.9];
image_data = {img1, img2, img3};
image_array = cat(1, image_data{:}) % concatinate the cell array to 2-d array
pix_array = var(image_array,0,1) % apply var() to all columns
我知道了:
image_array =
0.1000 0.2000 0.3000
0.4000 0.5000 0.6000
0.7000 0.8000 0.9000
pix_array =
0.0900 0.0900 0.0900