Convert pixel subscripts to block subscripts
Convert pixel subscripts from one level to another via the world coordinates to refer to the same spatial region.
Create a blocked image from a sample image included with the toolbox.
bim = blockedImage('tumor_091R.tif');
Define a region of interest in the finest resolution level in pixel subscripts.
level1PixelSubStart = [1700, 1550 1]; level1PixelSubEnd = [2100, 2000 3];
Get the image data from the region of interest on the resolution level 1 image.
imr = getRegion(bim, level1PixelSubStart, level1PixelSubEnd, "Level", 1); size(imr)
ans = 1×3 401 451 3
Convert the pixel subscripts that define the region of interest into world coordinates. By default,
sub2world converts the coordinates at level 1, the finest resolution.
worldRegion = sub2world(bim,[level1PixelSubStart; level1PixelSubEnd]);
Compute a binary mask at the coarsest level.
bbw = apply(bim, @(bs)imbinarize(im2gray(bs.Data)), "Level", 3);
Convert the world coordinates of the region of interest to pixel subscripts of the mask. Note that the mask has only two dimensions.
worldRegion = worldRegion(:,1:2); maskPixelSubs = world2sub(bbw,worldRegion);
Corresponding mask region.
bwr = getRegion(bbw, maskPixelSubs(1,:), maskPixelSubs(2,:)); size(bwr)
ans = 1×2 51 58
View the original image and the mask.
bim— Blocked image
Blocked image, specified as a
pixelsub— Pixel subscripts
Pixel subscripts, specified as a K-by-N integer-valued vector, where N is the number of dimensions and K is the number of coordinates.
world— World subscripts
World subscripts, returned as a K-by-X numeric
array. The world coordinates are in the same order as the pixel subscripts. For an
blockedImage, and K subscripts (each
row is a separate subscript),
pixelsub is a
K-by-N integer-valued matrix and
world is a K-by-N numeric