• 如果您觉得本站非常有看点，那么赶紧使用Ctrl+D 收藏吧

C#处理医学图像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比

4天前 3次浏览

血管对比增强：

骨骼对比增强：

MATLAB版本：

https://ww2.mathworks.cn/matlabcentral/fileexchange/24409-hessian-based-frangi-vesselness-filter

```#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <vector>
#include "MatBase64.h"
#include "frangi.h"
#include "ET.Functions.h"
using namespace std;
using namespace cv;
char* GetFrangiBase64Code(char* base64code, int SIGMA_START, int SIGMA_END, int SIGMA_STEP, float BETA_ONE, float BETA_TWO, bool BLACKWHITE){

//初始化矩阵参数
frangi2d_opts_t opts;
frangi2d_createopts(&opts, SIGMA_START,  SIGMA_END,  SIGMA_STEP,  BETA_ONE,  BETA_TWO,  BLACKWHITE);

//处理传入的base64编码转为Mat对象
string imgcode =base64code;
string s_mat;
s_mat = base64Decode(imgcode.data(), imgcode.size());
vector<char> base64_img(s_mat.begin(), s_mat.end());

//进行frangi算法处理
Mat input_img_fl;
input_img.convertTo(input_img_fl, CV_32FC1);
Mat vesselness, scale, angles;
frangi2d(input_img_fl, vesselness, scale, angles, opts);

vector<uchar> buf;
imencode(".jpg", vesselness * 255, buf);
auto *enc_msg = reinterpret_cast<unsigned char*>(buf.data());
string encoded = base64Encode(enc_msg, buf.size());

//返回base64编码
char *result = new char[encoded.length() + 1];
for (int i = 0; i < encoded.length(); ++i)
{
result[i] = encoded[i];
}
result[encoded.length()] = '';
return result;
}```

`extern "C" _declspec(dllexport) char* GetFrangiBase64Code(char * base64code, int SIGMA_START, int SIGMA_END, int SIGMA_STEP, float BETA_ONE, float BETA_TWO, bool BLACKWHITE);`

```LIBRARY "ET.Functions"

EXPORTS
GetFrangiBase64Code @ 1,```

```        [DllImport(@"ET.Functions.dll", EntryPoint = "GetFrangiBase64Code" ,CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr GetFrangiBase64Code(string base64code, int SIGMA_START, int SIGMA_END, int SIGMA_STEP, float BETA_ONE, float BETA_TWO, bool BLACKWHITE);
private void ckcbw_CheckedChanged(object sender, EventArgs e)
{
getimg();
}

private void trabarStart_ValueChanged(object sender, EventArgs e)
{
getimg();
}

void getimg()
{
int start = trabarStart.Value;
int end = trabarEnd.Value;
int step = trabarStep.Value;
float zaosheng = (float)trabarZaosheng.Value / 10;
float bg = (float)trabarBG.Value / 10;

IntPtr pRet = GetFrangiBase64Code(ToBase64(b), start, end, step, zaosheng, bg, ckcbw.Checked);
string strRet = Marshal.PtrToStringAnsi(pRet);
pictureBox1.BackgroundImage = Base64StringToImage(strRet);
}```

C#开发PACS、RIS、3D医学影像处理系统系列教程目录整理：

PACS客户端：

C#开发PACS医学影像处理系统(一)：开发背景和功能预览

C#开发PACS医学影像处理系统(二)：界面布局之菜单栏

C#开发PACS医学影像处理系统(三)：界面布局之工具

C#开发PACS医学影像处理系统(四)：界面布局之状态栏

C#开发PACS医学影像处理系统(五)：查询病人信息列表

C#开发PACS医学影像处理系统(六)：加载Dicom影像

C#开发PACS医学影像处理系统(七)：读取影像Dicom信息

C#开发PACS医学影像处理系统(八)：单元格变换

C#开发PACS医学影像处理系统(九)：序列控件与拖拽

C#开发PACS医学影像处理系统(十)：Dicom影像下载策略与算法

C#开发PACS医学影像处理系统(十一)：Dicom影像挂片协议

C#开发PACS医学影像处理系统(十二)：绘图处理之图形标记

C#开发PACS医学影像处理系统(十三)：绘图处理之病灶测量

C#开发PACS医学影像处理系统(十四)：处理Dicom影像窗宽窗位

C#开发PACS医学影像处理系统(十五)：Dicom影像交叉定位线算法

C#开发PACS医学影像处理系统(十六)：2D处理之影像平移和缩放

C#开发PACS医学影像处理系统(十七)：2D处理之影像旋转和翻转

C#开发PACS医学影像处理系统(十八)：Dicom使用LUT色彩增强和反色

C#开发PACS医学影像处理系统(十九)：Dicom影像放大镜

PACS三维处理医学图像：

C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

C#开发PACS医学影像三维重建(二):使用VTK进行体绘制

C#开发PACS医学影像三维重建(三):纹理映射与颜色传输

C#开发PACS医学影像三维重建(四):3D网格平滑效果

C#开发PACS医学影像三维重建(五):基于梯度透明的组织漫游

C#开发PACS医学影像三维重建(六):三维光源与阴影效果

C#开发PACS医学影像三维重建(七):空间测量与标注

C#开发PACS医学影像三维重建(八):VR体绘制

C#开发PACS医学影像三维重建(九):MPR三视图切面重建

C#开发PACS医学影像三维重建(十):MIP最小密度投影

C#开发PACS医学影像三维重建(十一):CPR曲面重建

C#开发PACS医学影像三维重建(十二):VE虚拟内镜技术

C#处理医学图像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比

C#处理医学图像(二):图像锐化增强对比

PACS网页端 开发Web版本的PACS：

C#开发Web端PACS(一):基于PACS客户端思想重写Web端

C#开发Web端PACS(二):使用 .Net MVC 开发手机端PACS服务端

C#开发Web端PACS(三):使用HTML5和CSS3开发PACS手机端页面

C#开发Web端PACS(四):Web端与服务端的DICOM传输

C#开发Web端PACS(五):Web端的平移缩放旋转2D操作

C#开发Web端PACS(六):Web端的窗宽窗位调整

C#开发Web端PACS(七):将移动端接入微信公众号实现医院云胶片

C#开发基于Python人工智能的肺结节自动检测

C#开发基于Python人工智能的脊柱侧弯曲率算法

C#开发基于Python机器学习的医学影像骨骼仿真动画

C#开发基于Python机器学习的术后恢复模拟

C#开发基于U3D的VR眼镜设备虚拟人体三维重建

C#开发基于全息投影的裸眼3D医学影像显示技术

C#开发医学影像胶片打印系统(一)：功能与胶片排版

C#开发医学影像胶片打印系统(二)：胶片打印机通讯

C#开发医学影像胶片打印系统(三)：不规则排版打印

PACS服务端：

C#开发PACS医学影像处理系统服务端(一):医疗设备的连接与收图

C#开发PACS医学影像处理系统服务端(二):高并发架构

PACS与RIS系统的通信与集成

C#开发PACS医学影像处理系统之云PACS(区域PACS)(一):架构概述

C#开发PACS医学影像处理系统之云PACS(区域PACS)(二):远程会诊与双向转诊

 QQ：1850969244 近10年开发经验，主攻C#、ASP MVC，HTML5， B/S C/S 皆可，目前研究医疗领域医学影像相关技术， 任何技术问题欢迎加QQ交流。