[商汤] 分割后处理

时间限制:2秒

空间限制:65536K

研究地球空间科学的永强想研究海岸线的长度和海岸线面积之间的关系,为此他找来了很多航拍图像。在航拍图像上利用图像分割的方法,把图像的每个像素标记成陆地(1)和水面(0)。

示例图片:

 

现在永强想知道每张图中陆地部分的面积。

 

已知每张图最底部的一条边都是陆地,并且在一张图上陆地都是四邻域联通的。

但是永强发现分割的结果有很多的噪声,于是他定义了如下规则试图去除噪声:

a)    如果一个水面区域被陆地包围,则将这个区域记为陆地;
b)    在a的基础上如果一个陆地区域不和底边的陆地相连,那么这是一个岛屿,不计入陆地的面积。

 

 

输入描述:

第一行为两个整数m和n,
接下来m行每行会有n个数,0表示水面,1表示陆地。


 

输出描述:

去噪后陆地部分的面积。

 

输入例子1:

5 6
1 0 0 1 0 0
0 0 1 0 1 0
1 1 1 1 1 0
1 0 0 1 1 1
1 1 1 1 1 1

 

输出例子1:

21

 

#include<iostream>
using namespace std;
 
int m,n;
int *p;
int sum;
 
/**让一个值为key的节点和他周围值为key的节点连通
 *key!=set
 */
void link(int key,int sx,int sy,int set)
{
    sum++;
    p[sy*n+sx]=set;
    if(sx-1>=0&&p[sy*n+sx-1]==key) link(key,sx-1,sy,set);
    if(sx+1<n&&p[sy*n+sx+1]==key) link(key,sx+1,sy,set);
    if(sy-1>=0&&p[(sy-1)*n+sx]==key) link(key,sx,sy-1,set);
    if(sy+1<m&&p[(sy+1)*n+sx]==key) link(key,sx,sy+1,set);
}
 
int main()
{
    int i,j;
    cin>>m>>n;
    p=new int[m*n];
    for(i=0;i<m*n;i++)
    {
        cin>>p[i];
    }
/*连通所有海洋且标记为-1*/
    for(i=0;i<n;i++)
    {
        if(p[i]==0) link(0,i,0,-1);
    }
    for(i=0;i<m;i++)
    {
        if(p[i*n]==0) link(0,0,i,-1);
        if(p[i*n+n-1]==0) link(0,n-1,i,-1);
    }
/*其余的都为陆地,将地中海变为陆地*/
    for(i=1;i<m-1;i++)
    {
        for(j=1;j<n-1;j++)
        {
            if(p[i*n+j]==0) p[i*n+j]=1;
        }
    }
    sum=0;
/*计算陆地面积*/
    link(1,0,m-1,2);
    cout<<sum<<endl;
}

 

### 商汤科技的语义分割技术及其应用 商汤科技作为全球领先的人工智能平台公司,在计算机视觉领域有着深厚的研究积累和技术沉淀。针对语义分割这一特定任务,商汤提供了多种解决方案和服务。 #### 技术特点 商汤科技所采用的技术方案通常基于深度学习框架PyTorch实现[^3]。通过不断优化网络结构设计以及训练策略,能够有效提升模型精度并降低计算资源消耗。此外,为了满足不同场景下的需求,商汤还研发了一系列专用算法来增强边缘细节捕捉能力、减少误判率等问题。 #### 应用案例 在智慧城市建设项目中,商汤利用自身的语义分割技术支持交通管理系统的升级换代工作;通过对道路像进行实时分析处理,可以精准定位车辆位置信息,并据此调整信号灯配时方案以缓解拥堵状况。同时,在医疗影像诊断方面也有着广泛应用前景——借助该技术可快速区分病变区域与正常组织边界,辅助医生做出更准确判断。 #### 数据准备流程 考虑到高质量的数据集对于构建高效能模型至关重要,因此商汤同样重视数据收集整理环节的工作。除了依靠传统手段获取原始素材外,还会积极尝试自动化标注工具的应用实践,以此加快项目进度的同时确保最终成果的质量可靠稳定[^4]。 ```python import torch from torchvision import models, transforms from PIL import Image def load_model(): model = models.segmentation.deeplabv3_resnet101(pretrained=True) model.eval() return model transform = transforms.Compose([ transforms.Resize((520, 520)), transforms.ToTensor(), ]) image_path = 'example.jpg' img = Image.open(image_path).convert('RGB') input_tensor = transform(img).unsqueeze(0) model = load_model() with torch.no_grad(): output = model(input_tensor)['out'][0] print(output.shape) # 输出特征尺寸 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值