在 MATLAB 中绘制子矩阵 (ROI)

plotting a submatrix (ROI) in MATLAB

我正在尝试 select 使用 MATLAB 的特定区域。在提取子矩阵之前,我使用 plot 命令定义区域。

figure,imshow(imgc,[0,3000]);
hold on;
plot([x1,x2],[y1,y1],'Color','r','LineWidth',0.5)
hold on;
plot([x1,x1],[y1,y2],'Color','r','LineWidth',0.5)
hold on;
plot([x2,x2],[y1,y2],'Color','r','LineWidth',0.5)
hold on;
plot([x1,x2],[y2,y2],'Color','r','LineWidth',0.5)
hold on;

绘图后,我提取了这个区域。

ROI=img(x1:x2,y1:y2);
img(x1:x2,y1:y2)=0;

但是图中绘制的区域和子矩阵不同:

红框是感兴趣区域的图,0s的区域是提取的sub matrix.Ideally红框应该在0s的区域周围。蓝线是坐标轴

问题是你应该交换 x 和 y 坐标:

img(y1:y2, x1:x2)=0;

说明

问题是 function/matrix 的 arguments/indexes 是以相反的顺序提供的:

matrix(row, column)

对比

function(x,y)

x(第一个参数)通常表示水平轴,因此对应于 column(第二个参数)参数和 yrow 的同义词。