当前位置: 首页 > news >正文

湖州长兴县建设局网站做互联网平台要多少钱

湖州长兴县建设局网站,做互联网平台要多少钱,给非吸公司建设网站,网站简繁体转换.rar图像基本处理算法的简单实现#xff08;一#xff09; 图像基本处理算法的简单实现#xff08;二#xff09; 4#xff09;膨胀腐蚀 属于什么心态学#xff0c;膨胀、腐蚀、击中/击不中变换、细化…#xff08;又晕了T^T#xff09;。简单点好像就是集合运算#xff0…  图像基本处理算法的简单实现一  图像基本处理算法的简单实现二   4膨胀腐蚀 属于什么心态学膨胀、腐蚀、击中/击不中变换、细化…又晕了T^T。简单点好像就是集合运算图像与一结构元素的交差补什么的。图像一点的周围是否符合结构元素然后该怎么处理。 结构元素B由0和1组成用于扫描比较二值化图像A。 膨胀 1、用结构元素B扫描图像A的每一个像素 2、用结构元素与其覆盖的二值图像做“与”操作 3、如果都为0结果图像的该像素为0。否则为1 腐蚀 1、用结构元素B扫描图像A的每一个像素 2、用结构元素与其覆盖的二值图像做“与”操作 3、如果都为1结果图像的该像素为1。否则为0 膨胀腐蚀是形态学处理的基础。copy的 膨胀的实现 /**  * 对二值化Bitmap进行膨胀运算后返回  *  * 膨胀结构元素3x3 全  *  * JNIEnv*  jni环境jni必要参数  * jobject  java对象jni必要参数  * jintArray    Bitmap所有像素值  * int  Bitmap宽度  * int  Bitmap高度  */ JNIEXPORT jintArray JNICALL Java_org_join_image_util_JoinImage_dilation(         JNIEnv* env, jobject obj, jintArray buf, int w, int h) {     LOGE(dilation);      jint * cbuf; // 源图像     cbuf  (*env)-GetIntArrayElements(env, buf, 0); // 获取int数组元素      int white  0xFFFFFFFF; // 不透明白色     int black  0xFF000000; // 不透明黑色      int size  w * h;     jint rbuf[size]; // 目标图像     memset(rbuf, black, size * sizeof(jint)); // 将目标图像置成全黑      int i, j, m, n, gray;     jint *p, *q;     // 由于使用3×3的结构元素为防止越界所以不处理上下左右四边像素     for (i  1; i  h - 1; i) {         for (j  1; j  w - 1; j) {             p  cbuf  w * i  j; // 指向源图像i行j列              // 遍历源图像对应结构元素的各点             for (m  -1; m  1; m) {                 for (n  -1; n  1; n) {                     gray  (*(p  w * m  n))  0xFF; // 获取源图像对应结构元素点的灰度值                     // 如果对应3x3范围内有白点其他色都算为黑                     if (gray  255) {                         q  rbuf  w * i  j; // 指向目标图像i行j列                         *q  white; // 将目标图像中的当前点赋成白色                         break;                     }                 }             }         }     }      jintArray result  (*env)-NewIntArray(env, size); // 新建一个jintArray     (*env)-SetIntArrayRegion(env, result, 0, size, rbuf); // 将rbuf转存入result     (*env)-ReleaseIntArrayElements(env, buf, cbuf, 0); // 释放int数组元素     return result; }  腐蚀的实现 /**  * 对二值化Bitmap进行腐蚀运算后返回  *  * 腐蚀结构元素3x3 全  *  * JNIEnv*  jni环境jni必要参数  * jobject  java对象jni必要参数  * jintArray    Bitmap所有像素值  * int  Bitmap宽度  * int  Bitmap高度  */ JNIEXPORT jintArray JNICALL Java_org_join_image_util_JoinImage_erosion(         JNIEnv* env, jobject obj, jintArray buf, int w, int h) {     LOGE(erosion);      jint * cbuf; // 源图像     cbuf  (*env)-GetIntArrayElements(env, buf, 0); // 获取int数组元素      int white  0xFFFFFFFF; // 不透明白色     int black  0xFF000000; // 不透明黑色      int size  w * h;     jint rbuf[size]; // 目标图像     memset(rbuf, black, size * sizeof(jint)); // 将目标图像置成全黑      int i, j, m, n, gray;     jint *p, *q;     // 由于使用3×3的结构元素为防止越界所以不处理上下左右四边像素     for (i  1; i  h - 1; i) {         for (j  1; j  w - 1; j) {             p  cbuf  w * i  j; // 指向源图像i行j列              q  rbuf  w * i  j; // 指向目标图像i行j列             *q  white; // 将目标图像中的当前点赋成白色              // 遍历源图像对应结构元素的各点             for (m  -1; m  1; m) {                 for (n  -1; n  1; n) {                     gray  (*(p  w * m  n))  0xFF; // 获取源图像对应结构元素点的灰度值                     // 如果对应3x3范围内有黑点其他色都算为白                     if (gray  0) {                         *q  black; // 将目标图像中的当前点赋成黑色                         break;                     }                 }             }         }     }      jintArray result  (*env)-NewIntArray(env, size); // 新建一个jintArray     (*env)-SetIntArrayRegion(env, result, 0, size, rbuf); // 将rbuf转存入result     (*env)-ReleaseIntArrayElements(env, buf, cbuf, 0); // 释放int数组元素     return result; }  好吧都一样的结构元素这是偷懒呢。没必要非这样也可以如“背景色点上下左右3点为前景色则将其填充为前景色”什么的。 5细化 提取图像骨架的。主要有Zhang快速并行细化方法、Hilditch、Pavlidis、Rosenfeld、索引表细化方法等。 简述下连通图概念先分为四连通和八连通或者称之为邻域。四连通就是图像上下左右有一点时才算这两点是连接的而八连通则周围一圈有一点都行。也就是一点只有右上角有邻点则是八连通非四连通^^。 算法按着名字查找下就好不想再表述了实现代码注释了其实有了的^^。 Zhang快速并行细化方法 /**  * 对二值化Bitmap进行细化运算后返回  *  * 采用“Zhang快速并行细化方法”  *  * JNIEnv*  jni环境jni必要参数  * jobject  java对象jni必要参数  * jintArray    Bitmap所有像素值  * int  Bitmap宽度  * int  Bitmap高度  */ JNIEXPORT jintArray JNICALL Java_org_join_image_util_JoinImage_thinning(         JNIEnv* env, jobject obj, jintArray buf, int w, int h) {     LOGE(thinning);      jint * cbuf;     cbuf  (*env)-GetIntArrayElements(env, buf, 0); // 获取int数组元素      int black  0xFF000000; // 不透明黑色      unsigned char foreground  0xFF; // 前景灰度值255白     unsigned char background  0; // 背景灰度值0黑      jboolean modified  1; // 设置脏标记true     unsigned char count; // 计数器     unsigned char mark[w][h]; // 可删除标记      int size  w * h; // 数据数目      /*      * 8-领域示意图      *      * P9   P2  P3      * P8   P1  P4      * P7   P6  P5      */      int i, j, m, n; // 循环标记     unsigned char gray; // 灰度值     unsigned char grays[3][3]; // 领域各点灰度值     jint *p; // 指向源图像像素的指针      // 一次迭代操作直到没有点再满足标记条件     while (modified) {         modified  0; // 设置脏标记false          /*          * 第一层子循环删除条件          *          * (1.1) 2N(p1)6          * (1.2) S(p1)1          * (1.3) p2*p4*p60          * (1.4) p4*p6*p80          *          * N(p1)p1的非零邻点的个数          * S(p1)以p2 p3 …… p9为序时这些点的值从0到1变化的次数          */          memset(mark, 0, sizeof(mark)); // 重置删除标记为false          // 防止越界不处理上下左右四边像素         for (i  1; i  h - 1; i) {             for (j  1; j  w - 1; j) {                  p  cbuf  w * i  j; // 指向源图像i行j列                 gray  (*p)  0xFF; // 获得灰度值                  if (gray  foreground) { // 判断是否为细化像素前景像素                      // 计算N(p1)                     count  0; // 重置计数器                     for (m  -1; m  1; m) {                         for (n  -1; n  1; n) {                             gray  (*(p  w * m  n))  0xFF; // 获取领域各点的灰度值                             grays[m  1][n  1]  gray; // 同时存储领域各点的灰度值                             if (gray  foreground) { // 如果为前景像素                                 count;                             }                         }                     }                     count--; // 去除中心点                      // 判断条件(1.1)                     if (2  count  count  6) {                     } else {                         continue; // 条件(1.1)不成立跳出循环                     }                      // 计算S(p1)四周像素由0变255的次数                     // 需先计算N(p1)获取领域各点的灰度值                     count  0; // 重置计数器                     if (grays[0][1]  grays[0][2])                         count; // p2-p3                     if (grays[0][2]  grays[1][2])                         count; // p3-p4                     if (grays[1][2]  grays[2][2])                         count; // p4-p5                     if (grays[2][2]  grays[2][1])                         count; // p5-p6                     if (grays[2][1]  grays[2][0])                         count; // p6-p7                     if (grays[2][0]  grays[1][0])                         count; // p7-p8                     if (grays[1][0]  grays[0][0])                         count; // p8-p9                     if (grays[0][0]  grays[0][1])                         count; // p9-p2                      // 判断条件(1.2)                     if (1  count) {                     } else {                         continue; // 条件(1.2)不成立跳出循环                     }                      // 判断条件(1.3)                     if (background  grays[0][1] || background  grays[1][2]                             || background  grays[2][1]) {                     } else {                         continue; // 条件(1.3)不成立跳出循环                     }                      // 判断条件(1.4)                     if (background  grays[1][2] || background  grays[2][1]                             || background  grays[1][0]) {                     } else {                         continue; // 条件(1.4)不成立跳出循环                     }                      /*                      * 四条件都成立时                      */                     mark[j][i]  1; // 删除标记为true                     modified  1; // 脏标记为true                 }             }         }          // 由删除标记去除         if (modified) {             for (i  1; i  h - 1; i) {                 for (j  1; j  w - 1; j) {                     // 如果删除标记为true                     if (1  mark[j][i]) {                         cbuf[w * i  j]  black; // 修改成背景色黑                     }                 }             }         }          /*          * 第二层子循环删除条件          *          * (1.1) 2N(p1)6          * (1.2) S(p1)1          * (2.3) p2*p4*p80          * (2.4) p2*p6*p80          */         memset(mark, 0, sizeof(mark)); // 重置删除标记为false          // 防止越界不处理上下左右四边像素         for (i  1; i  h - 1; i) {             for (j  1; j  w - 1; j) {                  p  cbuf  w * i  j; // 指向源图像i行j列                 gray  (*p)  0xFF; // 获得灰度值                  if (gray  foreground) { // 判断是否为细化像素前景像素                      // 计算N(p1)                     count  0; // 重置计数器                     for (m  -1; m  1; m) {                         for (n  -1; n  1; n) {                             gray  (*(p  w * m  n))  0xFF; // 获取领域各点的灰度值                             grays[m  1][n  1]  gray; // 同时存储领域各点的灰度值                             if (gray  foreground) { // 如果为前景像素                                 count;                             }                         }                     }                     count--; // 去除中心点                      // 判断条件(1.1)                     if (2  count  count  6) {                     } else {                         continue; // 条件(1.1)不成立跳出循环                     }                      // 计算S(p1)四周像素由0变255的次数                     // 需先计算N(p1)获取领域各点的灰度值                     count  0; // 重置计数器                     if (grays[0][1]  grays[0][2])                         count; // p2-p3                     if (grays[0][2]  grays[1][2])                         count; // p3-p4                     if (grays[1][2]  grays[2][2])                         count; // p4-p5                     if (grays[2][2]  grays[2][1])                         count; // p5-p6                     if (grays[2][1]  grays[2][0])                         count; // p6-p7                     if (grays[2][0]  grays[1][0])                         count; // p7-p8                     if (grays[1][0]  grays[0][0])                         count; // p8-p9                     if (grays[0][0]  grays[0][1])                         count; // p9-p2                      // 判断条件(1.2)                     if (1  count) {                     } else {                         continue; // 条件(1.2)不成立跳出循环                     }                      // 判断条件(2.3)                     if (background  grays[0][1] || background  grays[1][2]                             || background  grays[1][0]) {                     } else {                         continue; // 条件(2.3)不成立跳出循环                     }                      // 判断条件(2.4)                     if (background  grays[0][1] || background  grays[2][1]                             || background  grays[1][0]) {                     } else {                         continue; // 条件(2.4)不成立跳出循环                     }                      /*                      * 四条件都成立时                      */                     mark[j][i]  1; // 删除标记为true                     modified  1; // 脏标记为true                 }             }         }          // 由删除标记去除         if (modified) {             for (i  1; i  h - 1; i) {                 for (j  1; j  w - 1; j) {                     // 如果删除标记为true                     if (1  mark[j][i]) {                         cbuf[w * i  j]  black; // 修改成背景色黑                     }                 }             }         }     }      jintArray result  (*env)-NewIntArray(env, size); // 新建一个jintArray     (*env)-SetIntArrayRegion(env, result, 0, size, cbuf); // 将cbuf转存入result     (*env)-ReleaseIntArrayElements(env, buf, cbuf, 0); // 释放int数组元素     return result; }    图像基本处理算法的简单实现三      本文转自winorlose2000 51CTO博客原文链接http://blog.51cto.com/vaero/823000如需转载请自行联系原作者
http://wiki.neutronadmin.com/news/130031/

相关文章:

  • 设计交流网站加急网站备案
  • 怎么介绍做网站技术建设部物业证书查询官方网站
  • 网站建设寻求wordpress 产品列表
  • 建设网站服务器 知乎网页界面图
  • 在网站上做播放视频广告是否违法深圳建网站培训机构
  • 泰国做彩票网站抖音小程序怎么开通
  • 中企动力做网站收费标准视频网站的建设费用
  • 成都网站建设创意网站开发遇到的难题解决
  • 正规的招聘网站济南做外贸的网站公司吗
  • 免费网站开发平台dedecms怎么制作网站
  • 工信部网站手机备案查询注册外贸公司的流程及费用
  • 东莞网站建设怎么做wordpress怎么恢复到原来版本
  • 杭州网站改版公司电话网站栏目内链怎么做
  • 做网站建设一年能赚多少怎么查看网站的域名
  • 自己的ip做网站下载赶集网招聘最新招聘
  • 网站首页的浮窗怎么做北京高端网站定制公司
  • 网站有什么用建网站需要哪些条件
  • 做公司网站 烟台发稿计划怎么写
  • 用vs2010做免费网站模板下载地址手机网站建设免费空间
  • 网站 美食频道 建设网站访问量大
  • 网站建设创客网站建设公司介绍
  • django做企业级网站网站建设公司问答营销案例
  • 搭建网站的步骤有哪些做视频网站服务器
  • 东营网站建设推广上海营销型网站seo
  • 电商网站开发有前台吗深圳做分销网站建设
  • 网站建设思路设计东莞网站营销推广
  • 网站开发需要什么基础知识阿里巴巴1688官网登录
  • 能下载的网站自己开发app怎么赚钱
  • 长沙网站优化电话wordpress esc_attr
  • 山东省建设局网站wordpress的文件权限设置方法