Obtain intensity value in an ROI on an image, and output the image with the displayed intensity value inside of the ROI on the image
15 views (last 30 days)
Show older comments
clear all
close all
% Example: Load image and define ROI
I = imread('image.jpg');
R = imresize(I, [800 1000]); % Resize image to full res
% Define a rectangular ROI
xmin = 450;
ymin = 350;
width = 100;
height = 100;
roi_mask = zeros(size(R, 1), size(R, 2)); % Create a mask
roi_mask(ymin:ymin+height-1, xmin:xmin+width-1) = true;
% Calculate mean intensity within the ROI
roi_intensity_value = mean(R(roi_mask));
% Convert mean intensity to string
mean_intensity_str = sprintf('Mean Intensity: %.2f', roi_intensity_value);
% Position for text
text_position = [x, y - 20]; % Adjusted position above ROI
% Write text onto the image
img_with_text = insertText(R, text_position, mean_intensity_str, ...
'FontSize', 12, 'TextColor', 'red', 'BoxColor', 'white', 'BoxOpacity', 0.8);
% Display the image with text
imshow(img_with_text);
% Optionally, save the image with the text
imwrite(img_with_text, 'image_with_mean_intensity.png');
Hello. I am receiving an error message with the line "roi_intensity_value = mean(R(roi_mask));". Does anyone know why?
0 Comments
Answers (1)
Manikanta Aditya
on 10 Jul 2024
The error is likely occurring because the roi_mask is of type logical, and R(roi_mask) is trying to index into R using this logical mask, which may not be properly handled by the mean function. To address this, you can convert the mask to linear indices and then compute the mean intensity value.
clear all
close all
% Example: Load image and define ROI
I = imread('image.jpg');
R = imresize(I, [800 1000]); % Resize image to full res
% Define a rectangular ROI
xmin = 450;
ymin = 350;
width = 100;
height = 100;
% Create a mask for the ROI
roi_mask = false(size(R, 1), size(R, 2)); % Create a mask
roi_mask(ymin:ymin+height-1, xmin:xmin+width-1) = true;
% Calculate mean intensity within the ROI
roi_intensity_value = mean(R(roi_mask(:)));
% Convert mean intensity to string
mean_intensity_str = sprintf('Mean Intensity: %.2f', roi_intensity_value);
% Position for text (adjusted position above ROI)
text_position = [xmin, ymin - 20];
% Write text onto the image
img_with_text = insertText(R, text_position, mean_intensity_str, ...
'FontSize', 12, 'TextColor', 'red', 'BoxColor', 'white', 'BoxOpacity', 0.8);
% Display the image with text
imshow(img_with_text);
% Optionally, save the image with the text
imwrite(img_with_text, 'image_with_mean_intensity.png');
Hope this helps!
2 Comments
Manikanta Aditya
on 10 Jul 2024
To draw the ROI onto the image and place the text inside the drawn ROI, you can use the insertShape function to draw the rectangle and adjust the text position to be inside the ROI.
Here is the code:
clear all
close all
% Example: Load image and define ROI
I = imread('image.jpg');
R = imresize(I, [800 1000]); % Resize image to full res
% Define a rectangular ROI
xmin = 450;
ymin = 350;
width = 100;
height = 100;
% Create a mask for the ROI
roi_mask = false(size(R, 1), size(R, 2)); % Create a mask
roi_mask(ymin:ymin+height-1, xmin:xmin+width-1) = true;
% Calculate mean intensity within the ROI
roi_intensity_value = mean(R(roi_mask(:)));
% Convert mean intensity to string
mean_intensity_str = sprintf('Mean Intensity: %.2f', roi_intensity_value);
% Position for text (inside the ROI)
text_position = [xmin + 5, ymin + 5]; % Slightly offset from the top-left corner of the ROI
% Draw the ROI on the image
img_with_roi = insertShape(R, 'Rectangle', [xmin, ymin, width, height], ...
'LineWidth', 2, 'Color', 'yellow');
% Write text onto the image inside the ROI
img_with_text = insertText(img_with_roi, text_position, mean_intensity_str, ...
'FontSize', 12, 'TextColor', 'red', 'BoxColor', 'white', 'BoxOpacity', 0.8);
% Display the image with text and ROI
imshow(img_with_text);
% Optionally, save the image with the text and ROI
imwrite(img_with_text, 'image_with_mean_intensity_and_roi.png');
Hope this helps!
See Also
Categories
Find more on Convert Image Type in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!