【问题标题】:how to divide image into 8x8 and 32x32 blocks in matlab如何在matlab中将图像划分为8x8和32x32块
【发布时间】:2015-06-13 20:24:53
【问题描述】:

图像 'lena.tif' 它必须分成 2 个大小为 8x8 的块。在每个块中都应该计算平均值和标准偏差,然后将这些结果保存在一个大小为 32x32 的图像中。可视化图像并解释结果?

请帮助我提供完整的解决方案,因为我是 matlab 的初学者

【问题讨论】:

标签: matlab block


【解决方案1】:

我猜你的意思是:将 256x256 的图像分成 8x8 块;对于每个计算平均值和标准差;并将结果保存为 32x32 矩阵。

这可以通过blockproc 轻松完成:

%// Load image
im = double(imread('lena.png')); %// 256x256 grayscale image

%// Compute block mean and std
m = blockproc(im, [8 8], @(b) mean(b.data(:))); %// 32x32 matrix of block means
s = blockproc(im, [8 8], @(b) std(b.data(:))); %// 32x32 matrix of block std's

%// Normalize to [0,1]
m = m-min(m(:));
m = m./max(m(:));
s = s-min(s(:));
s = s./max(s(:));

%// Write
N = 256; %// number of levels for writing m and s
imwrite(m*N, gray(N), 'lena_mean.png') %// save m as N-level grayscale image
imwrite(s*N, gray(N), 'lena_std.png') %// save s as N-level grayscale image

生成的图像:

  • 平均值

  • 标准差

【讨论】:

  • 非常感谢@LuisMento(对不起我的错误解释:/)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2017-12-17
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多