瓷砖造型算法设计外包.doc-CSTO.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
瓷砖造型算法设计外包.doc-CSTO.doc

算法思想 不同的造型和组合方式,就有不同的铺贴模式,但是每一种模式都可以使用一个简单的矩形来重复铺贴实现。其算法核心思想在于: 1. 根据瓷砖铺贴模式,找到一个最小的可重复铺贴的矩形区域; 2. 在该区域内每一种瓷砖的位置构造相应形状的瓷砖并填充; 为了得到这样一张最小可重复单元的图像,使用开源图像处理库OpenCV来进行处理构造。如图2所示的铺贴模式(对应图1铺贴效果),该模式由4种基础砖组成,共形成5个填充区域。要得到如图1中黄色线框中的最小可重复区域图案,可按如下步骤进行: 图2 1. 构造一张恰好包括黄色线框区域和黑色线框区域的图片DST_IMG,并使用底色填充; 2. 在红色瓷砖SRC_IMG上切割出区域R1大小的图片,并将其填充在DST_IMG中R1区域;(可使用cv::Mat的copyTo方法,将区域R1大小的像素颜色从SRC_IMG的ROI复制至DST_IMG的ROI) 3. 重复步骤2的方法填充区域R2,R3,R4,R5;(由于R2,R3,R4,R5并非矩形区域,因此可使用cv::fillConvexPoly方法构造一张Mask,再使用cv::Mat的copyTo方法将指定多边形区域内的像素颜色从SRC_IMG的ROI复制至DST_IMG的ROI) 4. 用同样的方法将DST_IMG剩余的未填充区域使用已填充完毕的模式进行填充;(模式重复) 5. 从DST_IMG切割出最小重复单元区域(黄线框中部分)。 实现规范 类设计及继承类实现 包含头文件:typedefine.h,TileTextureMaker.h 头文件:TileTextureMaker.h 类名ITileTextureMaker函数成员 (public)ITileTextureMaker()virtual ~ITileTextureMaker()void setTileModeParam(const TileModeParam tile_param)void getTileTextureSize(float* len_u, float* len_v) constconst void* getTexture()函数成员 (protected)virtual void set_image_size() =0virtual void set_tile_size() =0virtual void* make_color() =0数据成员 (protected)TileModeParam tileModeParamfloat lenUfloat lenVunsigned widthunsigned heightvoid* texture成员函数 公有成员函数(public)除析构函数外设计为非虚函数,基类提供实现,不需要继承类override,overwrite或者overload,只有设计为虚函数的成员函数可以被子类实现。 setTileModeParam:设置构造造型砖或组合砖所需的基本参数,用于设置数据成员tileModeParam;(TileModeParam类型参考头文件typedefine.h) getTileTextureSize:获取最终构造成功的最小可重复单元的实际规格(lenU,lenV)(单位:毫米mm); getTexture:获取用于渲染的纹理;当首次调用该函数时,该函数会根据瓷砖参数tileModeParam构造纹理,并将纹理保存于texture;如果已创建成功纹理,则直接返回texture;在该函数中会依次调用set_image_size,set_tile_size,make_color成员函数; set_image_size:纯虚函数,由子类提供实现,在成员函数getTexture中调用;子类在该函数中根据参数瓷砖tileModeParam计算并设置造型砖或组合砖最小可重复单元的像素分辨率,亦即设置成员变量width,height的值; set_tile_size:纯虚函数,由子类提供实现,在成员函数getTexture中调用;子类在该函数中根据参数瓷砖tileModeParam计算并设置造型砖或组合砖最小可重复单元的实际尺寸,亦即设置成员变量lenU,lenV的值; make_color:构造造型砖或组合砖的实际实现者,由子类根据参数tileModeParam实现瓷砖造型,完成构造最小可重复单元的功能,并设置最小可重复单元的实际尺寸(lenU,lenV)及像素分辨率(width,height)。函数返回保存图片颜色信息的连续存储空间,像素格式为B8G8R8,包含3个通道,每个通道8bit;如果存在错误,则返回空指针。 数据成员 ti

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档