MATLAB 的UNET代码

时间: 2023-07-02 13:03:30 浏览: 40
下面是一个简单的 MATLAB UNet 代码示例: ```matlab %% 加载数据 data = load('image_data.mat'); inputData = data.inputData; targetData = data.targetData; %% 定义网络架构 inputSize = size(inputData); numClasses = 2; layers = [ imageInputLayer(inputSize) convolution2dLayer(3,16,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,32,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,64,'Padding','same') batchNormalizationLayer reluLayer transposedConv2dLayer(2,64,'Stride',2,'Cropping','same') concatenationLayer(3) convolution2dLayer(3,32,'Padding','same') batchNormalizationLayer reluLayer transposedConv2dLayer(2,32,'Stride',2,'Cropping','same') concatenationLayer(3) convolution2dLayer(3,16,'Padding','same') batchNormalizationLayer reluLayer convolution2dLayer(1,numClasses) softmaxLayer pixelClassificationLayer ]; %% 训练网络 options = trainingOptions('adam', ... 'InitialLearnRate',1e-3, ... 'MaxEpochs',50, ... 'MiniBatchSize',64, ... 'Shuffle','every-epoch', ... 'ValidationData',{inputData,targetData}, ... 'ValidationFrequency',10, ... 'Plots','training-progress'); net = trainNetwork(inputData,targetData,layers,options); ``` 这个代码定义了一个简单的 UNet 架构,包括卷积层、批量归一化层、ReLU 激活函数、最大池化层、转置卷积层、拼接层、softmax 层和像素分类层。然后使用 `trainNetwork` 函数训练网络,并使用一些选项来配置训练过程,例如学习率、最大 epochs 数量、mini-batch 大小等。

相关推荐

以下是一个简单的 MATLAB UNet 代码示例: matlab % 加载数据 load('images.mat'); load('labels.mat'); % 定义输入图像大小 inputSize = size(images{1}); % 定义网络结构 inputLayer = imageInputLayer(inputSize); conv1 = convolution2dLayer(3, 64, 'Padding', 'same'); bn1 = batchNormalizationLayer; relu1 = reluLayer; conv2 = convolution2dLayer(3, 64, 'Padding', 'same'); bn2 = batchNormalizationLayer; relu2 = reluLayer; pool1 = maxPooling2dLayer(2, 'Stride', 2, 'Padding', 'same'); conv3 = convolution2dLayer(3, 128, 'Padding', 'same'); bn3 = batchNormalizationLayer; relu3 = reluLayer; conv4 = convolution2dLayer(3, 128, 'Padding', 'same'); bn4 = batchNormalizationLayer; relu4 = reluLayer; pool2 = maxPooling2dLayer(2, 'Stride', 2, 'Padding', 'same'); conv5 = convolution2dLayer(3, 256, 'Padding', 'same'); bn5 = batchNormalizationLayer; relu5 = reluLayer; conv6 = convolution2dLayer(3, 256, 'Padding', 'same'); bn6 = batchNormalizationLayer; relu6 = reluLayer; pool3 = maxPooling2dLayer(2, 'Stride', 2, 'Padding', 'same'); conv7 = convolution2dLayer(3, 512, 'Padding', 'same'); bn7 = batchNormalizationLayer; relu7 = reluLayer; conv8 = convolution2dLayer(3, 512, 'Padding', 'same'); bn8 = batchNormalizationLayer; relu8 = reluLayer; up1 = transposedConv2dLayer(2, 512, 'Stride', 2, 'Cropping', 'same'); concat1 = concatenationLayer(3); conv9 = convolution2dLayer(3, 256, 'Padding', 'same'); bn9 = batchNormalizationLayer; relu9 = reluLayer; conv10 = convolution2dLayer(3, 256, 'Padding', 'same'); bn10 = batchNormalizationLayer; relu10 = reluLayer; up2 = transposedConv2dLayer(2, 256, 'Stride', 2, 'Cropping', 'same'); concat2 = concatenationLayer(3); conv11 = convolution2dLayer(3, 128, 'Padding', 'same'); bn11 = batchNormalizationLayer; relu11 = reluLayer; conv12 = convolution2dLayer(3, 128, 'Padding', 'same'); bn12 = batchNormalizationLayer; relu12 = reluLayer; up3 = transposedConv2dLayer(2, 128, 'Stride', 2, 'Cropping', 'same'); concat3 = concatenationLayer(3); conv13 = convolution2dLayer(3, 64, 'Padding', 'same'); bn13 = batchNormalizationLayer; relu13 = reluLayer; conv14 = convolution2dLayer(3, 64, 'Padding', 'same'); bn14 = batchNormalizationLayer; relu14 = reluLayer; conv15 = convolution2dLayer(1, 2, 'Padding', 'same'); softmax = softmaxLayer; outputLayer = pixelClassificationLayer; % 组合网络层 layers = [ inputLayer conv1 bn1 relu1 conv2 bn2 relu2 pool1 conv3 bn3 relu3 conv4 bn4 relu4 pool2 conv5 bn5 relu5 conv6 bn6 relu6 pool3 conv7 bn7 relu7 conv8 bn8 relu8 up1 concat1 conv9 bn9 relu9 conv10 bn10 relu10 up2 concat2 conv11 bn11 relu11 conv12 bn12 relu12 up3 concat3 conv13 bn13 relu13 conv14 bn14 relu14 conv15 softmax outputLayer]; % 定义训练选项 options = trainingOptions('adam', ... 'MaxEpochs', 50, ... 'MiniBatchSize', 20, ... 'InitialLearnRate', 1e-3, ... 'Shuffle', 'every-epoch', ... 'Verbose', true); % 训练网络 net = trainNetwork(images, categorical(labels), layers, options); % 保存模型 save('unet.mat', 'net'); 这个代码示例定义了一个 UNet 网络结构,并使用 MATLAB 的 trainNetwork 函数进行训练。你需要准备好你自己的输入图像和标签数据集,并根据情况更改输入图像大小和训练选项。
Unet是一种常用的神经网络模型,用于图像分割任务。根据引用\[1\]中的信息,Unet的代码可以从MATLAB官网论坛上下载,这些代码并非原创。在使用Unet进行图像预测时,可以按照引用\[2\]中的代码进行操作。首先,需要加载测试图像和测试掩码,将其转换为灰度图像。然后,使用semanticseg函数对测试图像进行语义分割,得到预测结果。接下来,可以根据需要将预测结果转换为二值图像,并使用labeloverlay函数将预测结果和测试图像进行叠加显示。最后,可以使用imshow函数将原始测试图像、预测输出、预测覆盖、测试图像GroundTruth和GroundTruth覆盖显示在一个subplot中。如果需要导出Unet模型为ONNX格式,可以使用exportONNXNetwork函数,如引用\[3\]所示。导出后的模型可以使用opencv或tensorrt等工具进行应用部署。 #### 引用[.reference_title] - *1* [基于卷积神经网络的数字重建 - Unet Matlab代码](https://blog.csdn.net/weixin_43467572/article/details/118855995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Matlab+UNet+LIDC 32行代码训练自己的肺结节数据集](https://blog.csdn.net/weixin_41243677/article/details/120725718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Matlab图像分割(U-Net)](https://blog.csdn.net/Ango_/article/details/115252616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
UNET是一种常用的深度学习网络结构,常用于图像分割任务。在MATLAB中,我们可以使用MatConvNet等深度学习框架来实现UNET图像分割。 首先,我们需要准备训练数据和标签数据。训练数据通常是图像数据,而标签数据是对应于训练数据的像素级别的分类标签。 接下来,我们需要定义UNET网络结构。UNET网络结构通常由编码器和解码器两部分组成。编码器用于提取图像特征并降低尺寸,而解码器用于将特征重新上采样并生成分割结果。UNET网络结构使用的主要是卷积和上采样等操作。 然后,我们可以定义损失函数。常见的损失函数包括交叉熵损失函数和Dice损失函数。交叉熵损失函数用于比较预测结果和真实标签的差异,而Dice损失函数则是一种将两者进行相似度比较的指标。 接着,我们可以进行模型训练。训练过程通常包括多次迭代,每次迭代中,我们将训练数据输入到UNET网络中,计算损失函数并进行反向传播,从而更新网络参数。训练过程将不断优化UNET网络的性能。 最后,我们可以使用已训练好的UNET网络进行图像分割预测。将待分割的图像输入到UNET网络中,可以得到每个像素的分类结果,从而实现图像分割。 总之,UNET图像分割代码的实现通常包括准备数据、定义网络结构、定义损失函数、进行模型训练和进行图像分割预测等步骤。通过这些步骤,我们可以实现图像的自动分割,从而有效地进行图像处理和分析。
以下是一个简单的UNet跳跃连接的MATLAB代码示例: matlab % 定义UNET网络结构 inputLayer = imageInputLayer([256 256 3]); conv1 = convolution2dLayer(3, 64, 'Padding', 'same'); relu1 = reluLayer(); conv2 = convolution2dLayer(3, 64, 'Padding', 'same'); relu2 = reluLayer(); pool1 = maxPooling2dLayer(2, 'Stride', 2); conv3 = convolution2dLayer(3, 128, 'Padding', 'same'); relu3 = reluLayer(); conv4 = convolution2dLayer(3, 128, 'Padding', 'same'); relu4 = reluLayer(); pool2 = maxPooling2dLayer(2, 'Stride', 2); conv5 = convolution2dLayer(3, 256, 'Padding', 'same'); relu5 = reluLayer(); conv6 = convolution2dLayer(3, 256, 'Padding', 'same'); relu6 = reluLayer(); pool3 = maxPooling2dLayer(2, 'Stride', 2); conv7 = convolution2dLayer(3, 512, 'Padding', 'same'); relu7 = reluLayer(); conv8 = convolution2dLayer(3, 512, 'Padding', 'same'); relu8 = reluLayer(); pool4 = maxPooling2dLayer(2, 'Stride', 2); conv9 = convolution2dLayer(3, 1024, 'Padding', 'same'); relu9 = reluLayer(); conv10 = convolution2dLayer(3, 1024, 'Padding', 'same'); relu10 = reluLayer(); tConv1 = transposedConv2dLayer(2, 512, 'Stride', 2); cat1 = concatenationLayer(3); conv11 = convolution2dLayer(3, 512, 'Padding', 'same'); relu11 = reluLayer(); conv12 = convolution2dLayer(3, 512, 'Padding', 'same'); relu12 = reluLayer(); tConv2 = transposedConv2dLayer(2, 256, 'Stride', 2); cat2 = concatenationLayer(3); conv13 = convolution2dLayer(3, 256, 'Padding', 'same'); relu13 = reluLayer(); conv14 = convolution2dLayer(3, 256, 'Padding', 'same'); relu14 = reluLayer(); tConv3 = transposedConv2dLayer(2, 128, 'Stride', 2); cat3 = concatenationLayer(3); conv15 = convolution2dLayer(3, 128, 'Padding', 'same'); relu15 = reluLayer(); conv16 = convolution2dLayer(3, 128, 'Padding', 'same'); relu16 = reluLayer(); tConv4 = transposedConv2dLayer(2, 64, 'Stride', 2); cat4 = concatenationLayer(3); conv17 = convolution2dLayer(3, 64, 'Padding', 'same'); relu17 = reluLayer(); conv18 = convolution2dLayer(3, 64, 'Padding', 'same'); relu18 = reluLayer(); outputLayer = convolution2dLayer(1, 1); outputLayer.Name = 'output'; % 将网络结构组装成DAG网络 layers = [ inputLayer conv1 relu1 conv2 relu2 pool1 conv3 relu3 conv4 relu4 pool2 conv5 relu5 conv6 relu6 pool3 conv7 relu7 conv8 relu8 pool4 conv9 relu9 conv10 relu10 tConv1 cat1 conv11 relu11 conv12 relu12 tConv2 cat2 conv13 relu13 conv14 relu14 tConv3 cat3 conv15 relu15 conv16 relu16 tConv4 cat4 conv17 relu17 conv18 relu18 outputLayer ]; % 定义UNET网络的连接结构 connections = [ imageInputConnection(1, 'conv1') convolution2dConnection(5, 5, 64, 'conv1', 'conv2') convolution2dConnection(3, 3, 128, 'conv2', 'conv3') convolution2dConnection(3, 3, 256, 'conv3', 'conv4') convolution2dConnection(3, 3, 512, 'conv4', 'conv5') convolution2dConnection(3, 3, 1024, 'conv5', 'conv6') transposedConv2dConnection(2, 2, 512, 'conv6', 'tConv1') concatenationConnection('pool4', 'tConv1', 'cat1/in2') convolution2dConnection(3, 3, 512, 'cat1', 'conv11') convolution2dConnection(3, 3, 512, 'conv11', 'conv12') transposedConv2dConnection(2, 2, 256, 'conv12', 'tConv2') concatenationConnection('pool3', 'tConv2', 'cat2/in2') convolution2dConnection(3, 3, 256, 'cat2', 'conv13') convolution2dConnection(3, 3, 256, 'conv13', 'conv14') transposedConv2dConnection(2, 2, 128, 'conv14', 'tConv3') concatenationConnection('pool2', 'tConv3', 'cat3/in2') convolution2dConnection(3, 3, 128, 'cat3', 'conv15') convolution2dConnection(3, 3, 128, 'conv15', 'conv16') transposedConv2dConnection(2, 2, 64, 'conv16', 'tConv4') concatenationConnection('pool1', 'tConv4', 'cat4/in2') convolution2dConnection(3, 3, 64, 'cat4', 'conv17') convolution2dConnection(3, 3, 64, 'conv17', 'conv18') convolution2dConnection(1, 1, 1, 'conv18', 'output') ]; % 将网络结构和连接结构组装成DAG网络 lgraph = createLgraphUsingConnections(layers, connections); % 展示UNET网络结构 plot(lgraph); 这个示例代码展示了如何使用MATLAB的深度学习工具箱中的函数定义一个简单的UNET网络结构和连接结构,并将它们组装成一个DAG网络。这个网络结构包含了多个跳跃连接,用于将低层次和高层次的特征信息结合起来,从而提高图像分割的准确性。
UNet是一种常用于图像分割的深度学习网络结构,可以用于眼底血管分割。以下是一个基于Matlab实现的UNet眼底血管分割代码示例: 1. 首先需要准备眼底图像和标签图像,可以使用公开数据集或自己标注得到。 2. 加载数据并进行预处理 matlab % 加载眼底图像和标签图像 img = imread('retina_img.png'); label = imread('retina_label.png'); % 将图像归一化到0-1之间 img = im2double(img); label = im2double(label); % 对图像和标签进行裁剪,使其大小是2的整数次幂 img = img(1:512, 1:512); label = label(1:512, 1:512); % 将标签图像转换为分类的one-hot编码 label = categorical(label, [0 1], [1 0]); 3. 定义UNet网络结构 matlab % 定义UNet的编码器部分 encoder1 = convolution2dLayer(3, 64, 'Padding', 'same'); encoder1 = batchNormalizationLayer(encoder1); encoder1 = reluLayer(encoder1); encoder2 = maxPooling2dLayer(2, 'Stride', 2); encoder2 = convolution2dLayer(3, 128, 'Padding', 'same'); encoder2 = batchNormalizationLayer(encoder2); encoder2 = reluLayer(encoder2); encoder3 = maxPooling2dLayer(2, 'Stride', 2); encoder3 = convolution2dLayer(3, 256, 'Padding', 'same'); encoder3 = batchNormalizationLayer(encoder3); encoder3 = reluLayer(encoder3); encoder4 = maxPooling2dLayer(2, 'Stride', 2); encoder4 = convolution2dLayer(3, 512, 'Padding', 'same'); encoder4 = batchNormalizationLayer(encoder4); encoder4 = reluLayer(encoder4); % 定义UNet的解码器部分 decoder1 = transposedConv2dLayer(2, 512, 'Stride', 2); decoder1 = convolution2dLayer(3, 512, 'Padding', 'same'); decoder1 = batchNormalizationLayer(decoder1); decoder1 = reluLayer(decoder1); decoder2 = transposedConv2dLayer(2, 256, 'Stride', 2); decoder2 = convolution2dLayer(3, 256, 'Padding', 'same'); decoder2 = batchNormalizationLayer(decoder2); decoder2 = reluLayer(decoder2); decoder3 = transposedConv2dLayer(2, 128, 'Stride', 2); decoder3 = convolution2dLayer(3, 128, 'Padding', 'same'); decoder3 = batchNormalizationLayer(decoder3); decoder3 = reluLayer(decoder3); decoder4 = transposedConv2dLayer(2, 64, 'Stride', 2); decoder4 = convolution2dLayer(3, 64, 'Padding', 'same'); decoder4 = batchNormalizationLayer(decoder4); decoder4 = reluLayer(decoder4); % 定义UNet的输出层 outputLayer = convolution2dLayer(1, 2, 'Padding', 'same'); outputLayer = softmaxLayer(outputLayer); outputLayer = classificationLayer(outputLayer); % 将编码器和解码器部分连接起来,形成UNet网络 layers = [ encoder1 encoder2 encoder3 encoder4 decoder1 decoder2 decoder3 decoder4 outputLayer ]; 4. 训练UNet网络 matlab % 设置训练选项 options = trainingOptions('adam', ... 'InitialLearnRate', 1e-3, ... 'MaxEpochs', 30, ... 'MiniBatchSize', 16, ... 'Shuffle', 'every-epoch', ... 'ValidationData', {img, label}, ... 'ValidationFrequency', 5, ... 'Plots', 'training-progress'); % 开始训练 net = trainNetwork(img, label, layers, options); 5. 使用UNet网络进行眼底血管分割 matlab % 加载测试图像 testImg = imread('test_image.png'); testImg = im2double(testImg); % 对测试图像进行预处理 testImg = testImg(1:512, 1:512); % 使用UNet网络进行分割 predictedLabel = classify(net, testImg); % 将预测结果转换为二值图像 predictedLabel = double(predictedLabel) - 1; predictedLabel = imbinarize(predictedLabel); % 显示原图像和分割结果 figure; subplot(1, 2, 1); imshow(testImg); title('Original Image'); subplot(1, 2, 2); imshow(predictedLabel); title('Segmentation Result'); 以上是一个基于Matlab实现的UNet眼底血管分割代码示例,可以根据实际需求进行调整和修改。

最新推荐

计算机二级-计算机二级考试C语言题集+题解.zip

计算机二级_计算机二级考试C语言题集+题解

高数学习资料(含讲义及全部内容)(六).zip

高数学习资料(含讲义及全部内容)(六)

福建高技术统计面板2021-2000生产经营产业发展RD经费支出新产品研发等682个指标.xlsx

本数据包含的682个统计指标详见: https://blog.csdn.net/yushibing717/article/details/136286889 如: 高技术产业_生产经营情况-高技术产业主要经济指标-企业数_个 高技术产业_生产经营情况-高技术产业主要经济指标-从业人员年平均人数_人 高技术产业_生产经营情况-高技术产业主要经济指标-当年价总产值_亿元 高技术产业_生产经营情况-高技术产业主要经济指标-资产总计_亿元 高技术产业_生产经营情况-高技术产业主要经济指标-主营业务收入_亿元 高技术产业_生产经营情况-高技术产业主要经济指标-利润总额_亿元 高技术产业_生产经营情况-高技术产业主要经济指标-利税_亿元 高技术产业_生产经营情况-高技术产业主要经济指标-出口交货值_亿元 高技术产业_生产经营情况-大中型企业高技术产业_生产经营情况-企业数_个 高技术产业_生产经营情况-大中型企业高技术产业_生产经营情况-从业人员年平均人数_人 ......

300485赛升药业财务报告资产负债利润现金流量表企业治理结构股票交易研发创新等1391个指标(2012-2022).xlsx

包含1391个指标,其说明文档参考: https://blog.csdn.net/yushibing717/article/details/136115027 数据来源:基于上市公司公告数据整理 数据期间:从具体上市公司上市那一年开始-2022年度的数据,年度数据 包含各上市公司股票的、多年度的上市公司财务报表资产负债表、上市公司财务报表利润表、上市公司财务报表现金流量表间接法、直接法四表合在一个面板里面,方便比较和分析利用 含各个上市公司股票的、多年度的 偿债能力 披露财务指标 比率结构 经营能力 盈利能力 现金流量分析 风险水平 发展能力 每股指标 相对价值指标 股利分配 11类财务指标分析数据合在一个面板里面,方便比较和分析利用 含上市公司公告的公司治理、股权结构、审计、诉讼等数据 包含1391个指标,如: 股票简称 证券ID 注册具体地址 公司办公地址 办公地址邮政编码 董事会秘书 董秘联系电话 董秘传真 董秘电子邮箱 ..... 货币资金 其中:客户资金存款 结算备付金 其中:客户备付金 .........

300429强力新材财务报告资产负债利润现金流量表企业治理结构股票交易研发创新等1391个指标(2011-2022).xlsx

包含1391个指标,其说明文档参考: https://blog.csdn.net/yushibing717/article/details/136115027 数据来源:基于上市公司公告数据整理 数据期间:从具体上市公司上市那一年开始-2022年度的数据,年度数据 包含各上市公司股票的、多年度的上市公司财务报表资产负债表、上市公司财务报表利润表、上市公司财务报表现金流量表间接法、直接法四表合在一个面板里面,方便比较和分析利用 含各个上市公司股票的、多年度的 偿债能力 披露财务指标 比率结构 经营能力 盈利能力 现金流量分析 风险水平 发展能力 每股指标 相对价值指标 股利分配 11类财务指标分析数据合在一个面板里面,方便比较和分析利用 含上市公司公告的公司治理、股权结构、审计、诉讼等数据 包含1391个指标,如: 股票简称 证券ID 注册具体地址 公司办公地址 办公地址邮政编码 董事会秘书 董秘联系电话 董秘传真 董秘电子邮箱 ..... 货币资金 其中:客户资金存款 结算备付金 其中:客户备付金 .........

ssm数据结构课程网络学习平台的+vue毕业论文.doc

ssm数据结构课程网络学习平台的+vue毕业论文.doc

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

Objective-C中的协议与代理设计模式介绍

# 1. 理解Objective-C中的协议 协议是Objective-C中一种很重要的特性,它类似于其他编程语言中的接口,用来定义对象之间的通信规则和行为约定。在Objective-C中,协议可以帮助实现对象之间的松耦合和重用性。让我们深入了解Objective-C中的协议。 ## 1.1 什么是Objective-C中的协议? 在Objective-C中,协议是一组方法的声明,定义了一个对象可以遵循的接口。协议本身并不实现任何方法,而是规定遵循该协议的类需要实现协议中定义的方法。通过协议,可以在不同的类之间定义一组公共的行为和方法。 ## 1.2 协议的声明和使用方法 在Ob

编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求: C=m!/n!(m -n)!

好的,我可以编写这个函数。以下是代码示例: ```c++ #include <iostream> using namespace std; int f(int n) { if (n <= 1) { return 1; } else { return n * f(n - 1); } } int main() { int m, n; cout << "请输入两个整数m和n,以空格分隔:" << endl; cin >> m >> n; int C = f(m) / (f(n) * f(m - n));

视频中运动目标跟踪算法的研究.doc

视频中运动目标跟踪算法的研究.doc