机器视觉之图像add的三种方式

1. 测试环境

Matlab

2.代码与原图

girl1=imread('1.jpg');
girl2=imread('2.jpg');

imshow(girl1);
disp('girl1 image size:');
disp(size(girl1));

imshow(girl2);
disp('girl2 image size');
disp(size(girl2));

add1=girl1+girl2;
figure(1),imshow(add1);

add2=girl1./2+girl2./2;
figure(2),imshow(add2);

add3=add1./2;
figure(3),imshow(add3);

原图如下:
girl1:
这里写图片描述

girl2:
这里写图片描述

3. 结果与分析

这里写图片描述

可以看到,只有figure2是我们想要的结果,那么figure1和figure3问题出在哪里呢?
第一张图片很容易理解,直接相加会让像素点的值增大,所以大部分区域趋于白色,
而第三张图片偏暗是怎么回事呢?
举个简单的例子,对应像素点的值分别为200和180,
对于图片二由200/2+180/2=190
对于图片三计算方式为(200+180)/2 但问题在于像素点的取值有范围限制,最大为255,所以实际计算是255/2得到128,比第二张图的值小了很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Emgu CV是一个用于C#开发的图像处理库,它提供了许多计算机视觉的功能,括机器学习图像分类。下面是一个简单的例程,可以用来训练和测试图像分类模型: 首先,您需要准备图像数据集。数据集应该含用于训练和测试的图像,每个图像都应该有一个标签,表示它属于哪个类别。 接下来,您需要定义一个模型。在本例中,我们将使用卷积神经网络(CNN)来进行图像分类。以下是一个简单的CNN模型: ``` var model = new Sequential(); model.Add(new Convolution2D(32, kernelSize: (3, 3), activation: ActivationType.Relu, inputShape: (imageWidth, imageHeight, 3))); model.Add(new MaxPooling2D(poolSize: (2, 2))); model.Add(new Convolution2D(64, kernelSize: (3, 3), activation: ActivationType.Relu)); model.Add(new MaxPooling2D(poolSize: (2, 2))); model.Add(new Flatten()); model.Add(new Dense(128, activation: ActivationType.Relu)); model.Add(new Dense(classCount, activation: ActivationType.Softmax)); ``` 这个模型含两个卷积层、两个池化层和两个全连接层。它的输入形状是`(imageWidth, imageHeight, 3)`,表示图像的宽度、高度和通道数。输出层有`classCount`个节点,每个节点表示一个类别。 接下来,您需要编写代码来加载数据集、训练模型和测试模型。以下是一个简单的例程: ``` var trainData = new ImageDataGenerator().FlowFromDirectory(trainDir, targetSize: (imageWidth, imageHeight), batch_size: batchSize); var testData = new ImageDataGenerator().FlowFromDirectory(testDir, targetSize: (imageWidth, imageHeight), batch_size: batchSize); model.Compile(optimizer: new Adam(), loss: LossType.CategoricalCrossentropy, metrics: new[] { "accuracy" }); model.Fit(trainData, epochs: epochs, validation_data: testData); var testResult = model.Evaluate(testData); Console.WriteLine($"Test loss: {testResult[0]}, test accuracy: {testResult[1]}"); ``` 这个例程使用`ImageDataGenerator`类从文件夹中加载图像数据,并将它们转换为模型的输入格式。`batchSize`参数指定了每个批次的图像数量,`epochs`参数指定了训练的轮数。 训练完成后,我们可以使用`Evaluate`方法来测试模型的准确性。它将返回一个含测试损失和测试精度的数组。 这只是一个简单的例程,您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值