Поместить данные в определенный блок заблокированного изображения
Создайте заблокированное изображение, в которое можно записать данные. Формат заблокированного изображения указывается в destination параметр. Для записи в память укажите пустую матрицу. Необходимо также указать размер изображения и размер блоков, в которые требуется добавить порции изображения. Параметр начального значения зависит от формата, указанного в пункте назначения. Чтобы создать блокированное изображение с возможностью записи, укажите 'Mode' параметр со значением 'w' для режима записи.
destination = []; imgsize = [5 7]; blocksize = [2 2]; initval = uint8(0); bim = blockedImage(destination,imgsize,blocksize,initval, "Mode", 'w');
Запись данных в указанные блоки заблокированного изображения с помощью setBlock объектная функция. blocksubs параметр указывает координаты блока, в который требуется записать данные. blockdata параметр указывает данные для записи в указанный блок. Размер blockdata должен соответствовать размеру блока.
blocksubs = [1 1];
blockdata = ones(2,2,"uint8");
setBlock(bim, blocksubs, blockdata)
Закройте изображение для записи.
Переведите заблокированное изображение в режим чтения, установив для параметра Mode значение r для чтения.
bim.Mode = 'r'
bim =
blockedImage with properties:
Read only properties
Source: [5x7 uint8]
Adapter: [1x1 images.blocked.InMemory]
Size: [5 7]
SizeInBlocks: [3 4]
ClassUnderlying: "uint8"
Settable properties
BlockSize: [2 2]
Создайте полное изображение с помощью gather для сбора всех отдельных блоков.
fullImage = gather(bim);
Отображение сведений о заблокированном изображении в командной строке.
disp(fullImage)
1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Создание заблокированного изображения.
bim = blockedImage('tumor_091R.tif');Отображение заблокированного изображения и нарисуйте на нем круговую окупаемость инвестиций.
h = bigimageshow(bim); hROI = drawcircle(gca, 'Radius', 470, 'Position', [1477 2284]);

Укажите уровень разрешения для создания маски.
maskLevel = 3;
Создание блокированного изображения с возможностью записи в памяти.
bmask = blockedImage([], [200 200], bim.Size(maskLevel,1:2), false, "Mode", "w");
Укажите начальную и конечную точки маски.
bmask.WorldStart = bim.WorldStart(maskLevel, 1:2); bmask.WorldEnd = bim.WorldEnd(maskLevel, 1:2);
Отображение количества блоков.
disp(bmask.SizeInBlocks);
1 1
Преобразование координат ROI в пиксельный уровень.
roiPositionsRC = fliplr(hROI.Vertices); % x,y to row,column roiPosSub = world2sub(bmask, roiPositionsRC, "level", 1); for cSub = 1:bmask.SizeInBlocks(2) for rSub = 1:bmask.SizeInBlocks(1) blockSub = [rSub, cSub]; [pStart, pEnd] = blocksub2sub(bmask, blockSub, "Level", 1); % Create a grid encompassing all pixels in the block in X-Y order [xgrid,ygrid] = meshgrid(pStart(2):pEnd(2), pStart(1):pEnd(1)); % Create in/out mask for this block tileMask = inpolygon(xgrid, ygrid,... roiPosSub(:,2), roiPosSub(:,1)); % Write out the block setBlock(bmask, blockSub, tileMask); end end
Переключите заблокированное изображение в режим чтения.
bmask.Mode = 'r';Отображение маски.
figure bigimageshow(bmask)

bim - Заблокированное изображениеblockedImage объектЗаблокированное изображение, указанное как blockedImage объект.
blocksub - Вектор подстрочного индекса блокаВектор подстрочного индекса блока, заданный как вектор подстрочного индекса блока с целым числом 1-by-N. Диапазон допустимых элементов: 1 к соответствующему элементу в SizeInBlocks собственность.
Пример: [3, 2, 1]
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
blockdata - Блок данныхБлок данных, указанный как числовой массив с размерами, соответствующими BlockSize. Тип соответствует типу, указанному ClassUnderlying собственность. setBlock автоматически обрезает блоки вдоль кромок для соответствия Size собственность.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.