Поместите данные в конкретный блок заблокированного изображения
Создайте заблокированное изображение, на которое можно записать данные. Формат заблокированного изображения задается в destination
параметр. Чтобы записать в память, задайте пустую матрицу. Вы также должны задать размер изображения и размер блоков, в которые вы хотите уколоть изображение. Параметр начального значения зависит от формата, заданного в пункте назначения. Чтобы создать заблокированное изображение с возможностью записи, задайте 'Mode'
параметр со значением 'w'
для режима записи.
destination = []; imgsize = [5 7]; blocksize = [2 2]; initval = uint8(0); bim = blockedImage(destination,imgsize,blocksize,initval, "Mode", 'w');
Запись данных в указанные блоки в заблокированном изображении при помощи setBlock
функция объекта. The blocksubs
параметр задает координаты блока, в который вы хотите записать данные. The 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
Преобразуйте координаты информация только для чтения в пиксельный уровень.
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-бай- 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.