日期:2022-11-21 14:23:35
来源:互联网
点击:13
以下就是为您整理的能算卷积的计算器app的答案
图像卷积运算急需求解!。。。对一个5*5的图像和一个3*3的图像做卷积运算,具体过程如下:* *
函数名称:
* TemplateMatchDIB() * *
参数:
* LPSTR lpDIBBits - 指向源DIB图像指针 * LPSTR lpDIBBitsBK - 指向背景DIB图像指针 * LONG lWidth - 源图像宽度(象素数) * LONG lHeight - 源图像高度(象素数) * LONG lTemplateWidth - 模板图像宽度(象素数) * LONG lTemplateHeight - 模板图像高度(象素数) * *
返回值:
* BOOL - 运算成功返回TRUE,否则返回FALSE。 * *
说明:
* 该函数用于对图像进行模板匹配运算。 * * 要求目标图像为255个灰度值的灰度图像。 ************************************************************************/ BOOL WINAPI TemplateMatchDIB (LPSTR lpDIBBits, LPSTR lpTemplateDIBBits, LONG lWidth, LONG lHeight, LONG lTemplateWidth,LONG lTemplateHeight) { // 指向源图像的指针 LPSTR lpSrc,lpTemplateSrc; // 指向缓存图像的指针 LPSTR lpDst; // 指向缓存DIB图像的指针 LPSTR lpNewDIBBits; HLOCAL hNewDIBBits; //循环变量 long i; long j; long m; long n; //中间结果 double dSigmaST; double dSigmaS; double dSigmaT; //相似性测度 double R; //最大相似性测度 double MaxR; //最大相似性出现位置 long lMaxWidth; long lMaxHeight; //像素值 unsigned char pixel; unsigned char templatepixel; // 图像每行的字节数 LONG lLineBytes,lTemplateLineBytes; // 暂时分配内存,以保存新图像 hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight); if (hNewDIBBits == NULL) { // 分配内存失败 return FALSE; } // 锁定内存 lpNewDIBBits = (char * )LocalLock(hNewDIBBits); // 初始化新分配的内存,设定初始值为255 lpDst = (char *)lpNewDIBBits; memset(lpDst, (BYTE)255, lWidth * lHeight); // 计算图像每行的字节数 lLineBytes = WIDTHBYTES(lWidth *
8); lTemplateLineBytes = WIDTHBYTES(lTemplateWidth *
8); //计算dSigmaT dSigmaT = 0; for (n = 0;n lTemplateHeight ;n ) { for(m = 0;m lTemplateWidth ;m ) { // 指向模板图像倒数第j行,第i个象素的指针 lpTemplateSrc = (char *)lpTemplateDIBBits lTemplateLineBytes * n m; templatepixel = (unsigned char)*lpTemplateSrc; dSigmaT = (double)templatepixel*templatepixel; } } //找到图像中最大相似性的出现位置 MaxR = 0.0; for (j = 0;j lHeight - lTemplateHeight 1 ;j ) { for(i = 0;i lWidth - lTemplateWidth 1;i ) { dSigmaST = 0; dSigmaS = 0; for (n = 0;n lTemplateHeight ;n ) { for(m = 0;m lTemplateWidth ;m ) { // 指向源图像倒数第j n行,第i m个象素的指针 lpSrc = (char *)lpDIBBits lLineBytes * (j n) (i m); // 指向模板图像倒数第n行,第m个象素的指针 lpTemplateSrc = (char *)lpTemplateDIBBits lTemplateLineBytes * n m; pixel = (unsigned char)*lpSrc; templatepixel = (unsigned char)*lpTemplateSrc; dSigmaS = (double)pixel*pixel; dSigmaST = (double)pixel*templatepixel; } } //计算相似性 R = dSigmaST / ( sqrt(dSigmaS)*sqrt(dSigmaT)); //与最大相似性比较 if (R MaxR) { MaxR = R; lMaxWidth = i; lMaxHeight = j; } } } //将最大相似性出现区域部分复制到目标图像 for (n = 0;n lTemplateHeight ;n ) { for(m = 0;m lTemplateWidth ;m ) { lpTemplateSrc = (char *)lpTemplateDIBBits lTemplateLineBytes * n m; lpDst = (char *)lpNewDIBBits lLineBytes * (n lMaxHeight) (m lMaxWidth); *lpDst = *lpTemplateSrc; } } // 复制图像 memcpy(lpDIBBits, lpNewDIBBits, lWidth * lHeight); // 释放内存 LocalUnlock(hNewDIBBits); LocalFree(hNewDIBBits); // 返回 return TRUE; }Top 这是模板匹配的代码, 里面用的就是时域卷积的算法。 同时,时域的卷积就是频域的乘积, 可以把时域的图转化成频域,相乘。 ps 卷积需要补位, a ,b l = a b-1;
钣金展开图计算软件有什么好的建议?现在的3D软件,比如SOLIDWORKS、PRO/E的钣金都有自动展开功能啊,不需要专门的展开计算软件。
文章能算卷积的计算器app来源于网友整理,仅供参考。提示:想了解更多能算卷积的计算器app(能算卷积的计算器)相关的内容,请尝试通过上方搜索框搜索。