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

飓风算法恢复的网站wordpress nofollow标签

飓风算法恢复的网站,wordpress nofollow标签,男女直接做性视频网站,互联网站产品开发的流程HSV通道的含义 HSV通道是指图像处理中的一种颜色模型#xff0c;它由色调#xff08;Hue#xff09;、饱和度#xff08;Saturation#xff09;和明度#xff08;Value#xff09;三个通道组成。色调表示颜色的种类#xff0c;饱和度表示颜色的纯度或鲜艳程度#xf…HSV通道的含义 HSV通道是指图像处理中的一种颜色模型它由色调Hue、饱和度Saturation和明度Value三个通道组成。色调表示颜色的种类饱和度表示颜色的纯度或鲜艳程度明度表示颜色的亮度。HSV通道常用于图像处理中的颜色分析、颜色过滤、颜色调整等任务它相对于其他颜色模型具有更直观和易于调节的特点因此被广泛应用于计算机视觉和图像处理的领域。 Halcon算子例程 read_image (Image, D:/lena.jpg) decompose3 (Image, ImageR, ImageG, ImageB) trans_from_rgb (ImageR, ImageG, ImageB, ImageH, ImageS, ImageV, hsv) trans_to_rgb (ImageH, ImageS, ImageV, ImageR1, ImageG1, ImageB1, hsv) compose3 (ImageR1, ImageG1, ImageB1, MultiChannelImage)这里先将三通道RGB三通道拆开成单独的通道再将RGB与HSV通道互相转换最后将三通道图像合并成RGB图像。 Halcon的图像效果是 源代码实现 RGB转成HSV 这里需要注意的是,halcon这里将HSV三通道的取值范围作了说明H通道的数值范围是0到2*pi,S通道的数值范围是0到1V通道的数值范围是0到1。而常用的图像为BYTE字节型数值范围是0到255这里对公式做了修改使Matlab得出的图像数据范围是0到255可以直接显示这里可以从matlab的workspace中看到计算过程。 以下便是使用Matlab实现trans_from_rgb的效果 trans_from_rgb (ImageR, ImageG, ImageB, ImageH, ImageS, ImageV, hsv)Matlab源码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %代码--RGB通道转HSV通道 %时间2023.9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc; imageimread(D:\lena.jpg); [height,width,channels]size(image); figure; imshow(image); title(rgb-image); image_Rimage(:,:,1); image_Rdouble(image_R); image_Gimage(:,:,2); image_Gdouble(image_G); image_Bimage(:,:,3); image_Bdouble(image_B);%%%转化成HSV通道 H_image zeros(height,width); S_image zeros(height,width); V_image zeros(height,width);%%RGB转成HSV for i1:1:heightfor j1:1:width%%%计算三通道的最大最小值计算image_matrix [image_R(i,j), image_G(i,j), image_B(i,j)];maxValue max(image_matrix);minValue min(image_matrix);V_image(i,j) maxValue;if(maxValue minValue)S_image(i,j) 0;H_image(i,j) 0;else%%%计算饱和度S_image(i,j) (maxValue - minValue)*255/minValue;%%%计算H通道if(maxValue image_R(i,j))H_image(i,j) 42.5.*(image_G(i,j) - image_B(i,j))./(maxValue - minValue);elseif(maxValue image_G(i,j))H_image(i,j) 42.5 * (2 (image_B(i,j) - image_R(i,j)) / (maxValue - minValue));elseif(maxValue image_B(i,j)) H_image(i,j) 42.5 * (4 (image_R(i,j) - image_G(i,j)) / (maxValue - minValue));endendend end%%%RGB要取整 H_image uint8(H_image); S_image uint8(S_image); V_image uint8(V_image);figure; imshow(H_image); title(H_image);figure; imshow(S_image); title(S_image);figure; imshow(V_image); title(V_image);最终实现的效果是 最终验证的效果与halcon效果一致 同时以上代码采用C实现的话如下所示这里为了保证精度输出结果采用的是double类型但是范围也是0到255之间要显示的话需要转化为unsigned char类型 C源码 //将RGB图像转化成HSV图像 /* 输入 rData : r通道图像gData : g通道图像bData : b通道图像 输出 hDoubleData : h通道图像, h通道采用double类型保留精度sDoubleData : s通道图像s通道采用double类型保留精度vDoubleData : v通道图像v通道采用double类型保留精度 */ void trans_from_rgb(unsigned char *rData, unsigned char *gData, unsigned char *bData, double *hDoubleData, double *sDoubleData, double *vDoubleData, int height, int width) {if ((height 0) || (width 0))return;//在函数外部分配好内存空间if (rData NULL || gData NULL || bData NULL || hDoubleData NULL || sDoubleData NULL || vDoubleData NULL)return;int i;unsigned char minValue,maxValue;for (i 0; i width * height; i){//V通道数据,三通道的最大值maxValue std::max(std::max(rData[i], gData[i]), bData[i]);minValue std::min(std::min(rData[i], gData[i]), bData[i]);vDoubleData[i] maxValue;if (maxValue minValue){sDoubleData[i] 0;hDoubleData[i] 0;}else{//S通道sDoubleData[i] (maxValue - minValue)*255.0 / maxValue;//H通道if (maxValue rData[i])hDoubleData[i] 42.5 * (gData[i] - bData[i]) / (maxValue - minValue); else if (maxValue gData[i])hDoubleData[i] 42.5 * (2 (bData[i] - rData[i]) / (maxValue - minValue));else if (maxValue bData[i])hDoubleData[i] 42.5 * (4 (rData[i] - gData[i]) / (maxValue - minValue));}} }HSV转成RGB halcon给出的公式说明为 Matlab源码 同样的采用Matlab实现 %%%%%%%%%%%%%%%%%%%%%%%%%%% %代码--HSV通道转RGB通道 %时间2023.9 %%%%%%%%%%%%%%%%%%%%%%%%%%%% clc; image1imread(D:\lena.jpg); [height,width,channels]size(image1); image_Hdouble(image1); image2imread(E:\S_image.bmp); image_Sdouble(image2); image3imread(E:\V_image.bmp); image_Vdouble(image3);%%%转化成RGB通道 R_image zeros(height,width); G_image zeros(height,width); B_image zeros(height,width);%%%HSV转成RGB for i1:1:heightfor j1:1:widthif(image_S(i,j) 0)R_image(i,j) image_V(i,j);G_image(i,j) image_V(i,j);B_image(i,j) image_V(i,j);else%%Hi floor(image_H(i,j)*2*pi/255/deg2rad(60)); %%归一化到0到2*piHi floor(image_H(i,j)*0.025);Hf image_H(i,j)*0.025 - Hi;%%%%根据H的值将C,X,m分别对应到RGB三个分量上if(Hi 0)R_image(i,j) image_V(i,j);G_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255*(1-Hf));B_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255);elseif(Hi 1)R_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255*Hf);G_image(i,j) image_V(i,j);B_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255);elseif(Hi 2)R_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255);G_image(i,j) image_V(i,j);B_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255*(1-Hf));elseif(Hi 3)R_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255);G_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255*Hf);B_image(i,j) image_V(i,j);elseif(Hi 4)R_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255*(1-Hf));G_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255);B_image(i,j) image_V(i,j);elseif(Hi 5)R_image(i,j) image_V(i,j);G_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255);B_image(i,j) image_V(i,j) * (1 - image_S(i,j)/255*Hf);endendend end%%%RGB要取整 R_image uint8(R_image); G_image uint8(G_image); B_image uint8(B_image);figure; imshow(R_image); title(R_image);figure; imshow(G_image); title(G_image);figure; imshow(B_image); title(B_image);最终实现的效果是 可以看出与Halcon效果一致 C源码 同样的采用C实现 //将HSV图像转化成RGB图像 /* 输入 hDoubleData : h通道图像 ,h通道采用double类型保留精度sDoubleData : s通道图像 ,s通道采用double类型保留精度vDoubleData : v通道图像 ,v通道采用double类型保留精度 输出 rDoubleData : r通道图像 ,r通道采用double类型保留精度gDoubleData : g通道图像 ,g通道采用double类型保留精度bDoubleData : b通道图像 ,b通道采用double类型保留精度 */ void trans_to_rgb(double *hDoubleData, double *sDoubleData, double *vDoubleData, double *rDoubleData, double *gDoubleData, double *bDoubleData, int height, int width) {if ((height 0) || (width 0))return;if (rDoubleData NULL || gDoubleData NULL || bDoubleData NULL || hDoubleData NULL || sDoubleData NULL || vDoubleData NULL)return;int i;double Hi, Hf;for (i 0; i width * height; i){if (sDoubleData[i] 0){Hi floor(hDoubleData[i] * 0.025);Hf hDoubleData[i] * 0.025 - Hi;if (Hi 0){rDoubleData[i] vDoubleData[i];gDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0*(1 - Hf));bDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0);}else if (Hi 1){rDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0 * Hf);gDoubleData[i] vDoubleData[i];bDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0);}else if (Hi 2){rDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0);gDoubleData[i] vDoubleData[i];bDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0*(1 - Hf));}else if (Hi 3){rDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0);gDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0 * Hf);bDoubleData[i] vDoubleData[i];}else if (Hi 4){rDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0*(1 - Hf));gDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0);bDoubleData[i] vDoubleData[i];}else if (Hi 5){rDoubleData[i] vDoubleData[i];gDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0);bDoubleData[i] vDoubleData[i] * (1 - sDoubleData[i] / 255.0 * Hf);}}else{rDoubleData[i] gDoubleData[i] bDoubleData[i] vDoubleData[i];}} }通道拆分与合并C源代码实现 三通道拆分 Halcon中拆分三通道的算子为 decompose3 (Image, ImageR, ImageG, ImageB)对应的拆分三通道图像的C函数为 //拆分三通道图像 /* 输入 srcData : 三通道图像内存排列方式是BGRBGRBGR...... 输出 rData : r通道图像gData : g通道图像bData : b通道图像 */ void decompose3(unsigned char *srcData, unsigned char *rData, unsigned char *gData, unsigned char *bData, int height, int width) {if ((height 0) || (width 0))return;if (srcData NULL || rData NULL || gData NULL || bData NULL)return;int i; #pragma omp parallel for num_threads(3)for (i 0; i width * height; i){bData[i] srcData[3 * i];gData[i] srcData[3 * i 1];rData[i] srcData[3 * i 2];} }三通道合并 Halcon中拆分三通道的算子为 compose3 (ImageR1, ImageG1, ImageB1, MultiChannelImage)对应的合并三通道图像的C函数为 //合并三通道图像 /* 输入 rData : r通道图像gData : g通道图像bData : b通道图像 输出 bgrData:彩色图像,合并成BGRBGR.....排列 */ void compose3(unsigned char *rData, unsigned char *gData, unsigned char *bData, unsigned char *bgrData, int height, int width) {if ((height 0) || (width 0))return;if (bgrData NULL || rData NULL || gData NULL || bData NULL)return;int i; #pragma omp parallel for num_threads(3)for (i 0; i width * height; i){bgrData[3 * i] bData[i];bgrData[3 * i 1] gData[i];bgrData[3 * i 2] rData[i];} }
http://www.dnsts.com.cn/news/148019.html

相关文章:

  • wordpress 站内链接盐城亭湖区建设局网站
  • 请别人做网站注意事项手机网站开发项目
  • 专业网站建设比较好厦门微网站建设公司
  • 怎么制作网站app网站群发推广软件
  • php网站建设论文设计logo图案用什么软件
  • 府谷网站建设自家电脑做网站
  • 网站开发环境ide首页2免费空间
  • 新站秒收录接口网站建设设计设计公司哪家好
  • 网站灰色代码自助网站制作系统源码
  • windows2008 iis网站 指定域名深圳市龙华区平安医院
  • 58同城网站建设经营管理培训课程
  • 山西网站搜索排名优化公司导航主题wordpress
  • 东莞做营销网站建设神农架网页设计
  • 更换网站后台管理系统智通人才招聘网最新招聘
  • 门户手机版网站网页制作最常用的软件
  • 手机微信官方网站首页企业logo设计网站
  • 如何将数据库导入网站凡诺网站建设
  • 浮梁网站推广网站建设需求说明
  • 企业自建站烟台莱州网站建设
  • 南京网站建设企业搜索网站排行榜
  • 学校网站建设的背景企业营销策划经营范围
  • 网站为什么需要空间成都设计公司排名前十强
  • 合肥长丰路网站建设网站开发实例模板
  • 仿牌网站流量app开发公司的组织架构
  • 做外贸国外网站南昌官网seo诊断
  • 南宁建网站必荐云尚网络如何介绍网站建设公司
  • 网站建设哪家公司好一点国家免费职业技能培训官网
  • 有哪些网站系统网上商城是什么意思
  • 柯桥区网站建设运维工程师主要做什么
  • 用php做网站不用框架手把手教你优化网站