You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中实现录制视频的圆形裁剪?

MATLAB视频圆形裁剪代码中ci和gray_frame行的解释

先说明原代码的问题

原代码目前无法正常运行,存在三个关键问题:

  • 缺少xx和yy坐标网格的定义,这是实现圆形裁剪的必要前提
  • 变量名拼写错误:grey_frame应该写成gray_frame(前面定义的灰度图变量是gray_frame)
  • ci的定义放在while循环内属于冗余操作,可以移到循环外提升效率

1. ci = [638, 484, 512.75]; 行的含义

这行是定义圆形裁剪的核心参数数组,三个元素的意义分别是:

  • ci(1):圆形裁剪区域的半径(单位:像素,这里是638像素)
  • ci(2):圆形区域的中心行坐标(MATLAB图像的行号从上到下递增,这里指第484行)
  • ci(3):圆形区域的中心列坐标(MATLAB图像的列号从左到右递增,这里指第512.75列)

2. gray_frame = grey_frame((xx.^2 + yy.^2)<ci(1)^2); 行的含义

这行的本意是提取圆形区域内的像素,但写法有问题,拆解来看:

  • xx.^2 + yy.^2:计算每个像素坐标到圆心的距离平方(用平方比较是为了避免开根号,提升计算速度)
  • < ci(1)^2:判断当前像素是否在圆形区域内(距离圆心的平方小于半径平方,就属于圆内区域)
  • 用这个逻辑数组索引灰度图,会把所有圆内的像素提取出来,但直接这样写会把二维图像拉成一维向量,丢失原有的图像形状。

正确的圆形裁剪写法

如果要保留图像的二维结构,应该先创建掩码,再应用到灰度图上:

% 先创建图像的坐标网格
[yy, xx] = meshgrid(1:size(gray_frame, 1), 1:size(gray_frame, 2));
% 把坐标转换为以圆心为原点的相对坐标
xx = xx - ci(3);
yy = yy - ci(2);
% 生成圆形掩码:圆内为true,圆外为false
mask = (xx.^2 + yy.^2) < ci(1)^2;
% 对灰度图做裁剪,圆外像素设为0(也可以设为其他背景值)
cropped_gray_frame = gray_frame;
cropped_gray_frame(~mask) = 0;

如果要提取圆内区域并自动裁剪到最小包围矩形,可以用:

[rows, cols] = find(mask);
cropped_gray_frame = gray_frame(min(rows):max(rows), min(cols):max(cols));

修正后的完整循环代码示例

clear all
close all
clc

v = VideoReader("SquareWaveWithPlasticBall_90SLPM_Ceramic_16Hz_2.5G_10FPS.mp4"); 
i = 0;
% 把ci定义移到循环外,避免重复定义
ci = [638, 484, 512.75]; 

while hasFrame(v) 
    frame = readFrame(v); 
    gray_frame = rgb2gray(frame); 
    
    % 圆形裁剪部分
    [yy, xx] = meshgrid(1:size(gray_frame, 1), 1:size(gray_frame, 2));
    xx = xx - ci(3);
    yy = yy - ci(2);
    mask = (xx.^2 + yy.^2) < ci(1)^2;
    cropped_gray_frame = gray_frame;
    cropped_gray_frame(~mask) = 0;
    
    binary_frame = imbinarize(cropped_gray_frame, 0.3) ;

    file = sprintf("a_frame_%d",i); 
    myFolderpath = 'D:\MichaelJ\test4\BinarizedImages\';
    FILENAME = string(strcat(myFolderpath, file, '.png')); 
    imwrite(binary_frame, FILENAME);
    i = i + 1; 
end 

clear reader

内容的提问来源于stack exchange,提问作者Michael W. Jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:15:38