Один из способов разделить ваше изображение на блоки и затем выполнить некоторую обработку на нем - это использовать встроенную функцию BLOCKPROC (называемую blkproc
в более старых версиях Matlab).
%# find block length in order to get 64 blocks
imageSize = size(img);
blockLen = round(imageSize(1:2)/8);
%# apply a function to each block
out = blocproc(img,blockLen,@myFunction)
myFunction
- это функция, которую вы хотите применить к каждому блоку. Вы можете определить его как подфункцию вашего кода, или как отдельный m-файл, или как анонимную функцию. Вывод будет объединен в массив 8х8х, где х - это размер вывода вашей функции. myFunction
следует ожидать один входной аргумент, blockStruct
, который представляет собой структуру с полями data
, содержащей значения пикселей блока, а также с полями border
, blockSize
, imageSize
и location
.