MATLAB 视频处理Gamma灰度校正 阈值分割将图像二值化 对二值图像进行形态学处理连接目标 获得图像边框 通过边框求最小外接矩阵质心坐标 总体代码实现
时间: 2023-11-27 10:51:04 浏览: 63
用于灰度图像二值化的MATLAB代码,算法采用迭代法_二值化_图像处理
以下是 MATLAB 视频处理代码实现,包括 Gamma 灰度校正、阈值分割、形态学处理、连接目标、获得图像边框、通过边框求最小外接矩阵质心坐标:
```MATLAB
% 加载视频
videoObj = VideoReader('test.mp4');
numFrames = videoObj.NumFrames;
% 定义形态学处理参数
se = strel('disk', 10);
% 遍历每一帧图像
for k = 1:numFrames
% 读取当前帧图像
frame = read(videoObj, k);
% Gamma 灰度校正
gamma = 1.2;
frame = imadjust(frame,[],[],gamma);
% 阈值分割将图像二值化
threshold = graythresh(frame);
BW = imbinarize(frame, threshold);
% 对二值图像进行形态学处理连接目标
BW = imclose(BW, se);
% 获得图像边框
bbox = regionprops(BW, 'BoundingBox');
% 通过边框求最小外接矩阵质心坐标
centroids = zeros(length(bbox), 2);
for i = 1 : length(bbox)
x = bbox(i).BoundingBox(1);
y = bbox(i).BoundingBox(2);
w = bbox(i).BoundingBox(3);
h = bbox(i).BoundingBox(4);
x_centroid = x + w/2;
y_centroid = y + h/2;
centroids(i,:) = [x_centroid, y_centroid];
end
% 显示结果
imshow(frame);
hold on;
for i = 1 : length(bbox)
rectangle('Position', bbox(i).BoundingBox, 'EdgeColor', 'r', 'LineWidth', 2);
plot(centroids(i,1), centroids(i,2), 'b+', 'MarkerSize', 10, 'LineWidth', 2);
end
hold off;
end
```
该代码可处理名为 "test.mp4" 的视频,首先会遍历每一帧图像,然后进行 Gamma 灰度校正、阈值分割、形态学处理、连接目标、获得图像边框、通过边框求最小外接矩阵质心坐标,并在图像上标注出目标边框和质心。
阅读全文