我只需要使用rbbox獲得像素(相對於圖像,而不是圖像)的ROI,但是我很難從歸一化圖形座標的rbbox到圖像座標。Matlab獲取圖像內像素的rbbox(ROI)
我已經試圖乘以:圖像尺寸,圖形尺寸,屏幕尺寸,(圖像尺寸)/(圖尺寸)。還嘗試使用軸位置。
規範化意味着從0到1,所以1應該是圖像大小或數字大小,所以我嘗試應該工作!我想也許這個數字的邊界也算數...... Google這次沒有幫助。
應該有一個方法pixelStuff = FromNormalizedToImagePixels(normalizedStuff)!!
- 圖尺寸以像素爲單位=窗口大小,無用,它包含 的邊框。
- 我需要「圖像像素」(圖中的圖像)的投資回報率。
- 如果我可以得到 圖中的圖像區域(沒有邊框),我可以計算ROI。
我在想什麼?
代碼示例:
close all; clc;
figH = figure();
set(figH,'Units','normalized');
if isvalid(figH)
% load some image
imgData = imread('ImL_9.png');
imshow(imgData,'Colormap', hot(256),'DisplayRange',...
[min(imgData(:)) max(imgData(:))],'InitialMagnification','fit');
grid on; axis on; xlabel('x'); ylabel('y');
axis equal; axis manual;
% Get image size (pixels)
[isy,isx] = size(imgData);
% Set axis to fit image
ax = get(figH,'CurrentAxes');
set(ax,'xlim',[0 isx]); set(ax,'ylim',[0 isy]);
% Get mouse event to set ROI
k = waitforbuttonpress;
imgROIn = rbbox;
annotation('rectangle',imgROIn,'Color','red');
% Get screen size
screenSize = get(0,'screensize');
% Get figure position
pos = get(figH, 'Position');
% Conversion 1. roi size px = roi size norm * (image size px/figure size norm)
cx = isx/pos(3);
cy = isy/pos(4);
conv = [cx cy cx cy];
% Converts from normalized figure coordinate to image pixels coordinate
imgROIpx = imgROIn.*conv;
% Show result. imgROIpx does not match what was expected, like
% selecting the entire image the result should be: 0 0 isx isy
imgROIpx
end
https://www.mathworks.com/help/ matlab/ref/annotation.html#inputarg_dim'要更改單位,請使用Units屬性' – Yvon
我需要IMAGE座標中的ROI,圖中的圖像。以像素爲單位獲取位置將導致圖形窗口大小(包括其邊框)。 – Pedro77
ok請https://stackoverflow.com/help/mcve – Yvon