MATLAB代码,实现手动框选图像指定区域,并连续画若干竖直或水平的直线线段提取指定若干线段,计算所画若干线段处图像的灰度均值,并且按照所画线段顺序统计这些灰度均值变化情况形成曲线图,要求框选出的区域用红色框标记于原图像,将直线线段用蓝色标记于原图像,
时间: 2023-06-25 09:03:24 浏览: 109
matlab代码 图像灰度量化
以下是实现手动框选图像指定区域,并连续画若干竖直或水平的直线线段提取指定若干线段,计算所画若干线段处图像的灰度均值,并且按照所画线段顺序统计这些灰度均值变化情况形成曲线图的MATLAB代码:
```matlab
% 读取图像
img = imread('test.jpg');
% 显示原图像
figure(1);
imshow(img);
title('原图像');
% 手动框选区域
rect = getrect;
x = rect(1);
y = rect(2);
w = rect(3);
h = rect(4);
% 绘制红色框
figure(1);
hold on;
rectangle('Position', [x, y, w, h], 'EdgeColor', 'r', 'LineWidth', 2);
hold off;
% 提取指定若干线段
num_lines = 5; % 线段数量
line_positions = linspace(y, y+h, num_lines+2);
line_positions = line_positions(2:end-1);
% 绘制蓝色线段
figure(1);
hold on;
for i = 1:num_lines
plot([x, x+w], [line_positions(i), line_positions(i)], 'b', 'LineWidth', 2);
end
hold off;
% 计算灰度均值
means = zeros(1, num_lines);
for i = 1:num_lines
line_img = img(line_positions(i):line_positions(i), x:x+w);
means(i) = mean(line_img(:));
end
% 绘制曲线图
figure(2);
plot(means);
xlabel('线段编号');
ylabel('灰度均值');
title('灰度均值变化曲线图');
```
这段代码实现了对指定区域进行手动框选,绘制红色框标记;在指定区域内提取若干条竖直线段,绘制蓝色线段标记;计算每条线段处图像的灰度均值,并将这些均值按照线段顺序绘制成曲线图。你可以根据自己的需要进行修改和调整。
阅读全文