- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 《新能源汽车维护与保养》课件——任务1新能源汽车起动、操控与充电.pptx VIP
- 2019年山东省广播电视技术能手竞赛(网络安全)答案.doc VIP
- 2025年华北煤炭医学院附属医院医护人员招聘参考题库含答案解析.docx VIP
- 起重机械培训(初训)课件.ppt VIP
- 《危化品企业安全隐患排查治理图册》.pptx VIP
- 2025广东珠海市斗门区招聘公办中小学教师71人笔试备考题库及答案解析.docx VIP
- 声音在不同介质中的传播说课课件公开课教案教学设计课件案例资料.pptx VIP
- 阿那亚品牌手册.pdf VIP
- 2021ACOG妊娠期急性脂肪肝指南要点解读(全文).docx VIP
- 《福建省工程建设领域保障农民工工资支付规范化管理指导手册(第一版)》(2).doc VIP
文档评论(0)