杰林码在荧光细胞识别中的应用(一)

一、杰林码轮廓预测算法

本算法是基于我的《一种全新的图像变换理论的实验》系列博客中的算法构造的轮廓预测算法,能有效的进行细胞轮廓预测,而且从前景到背景支持50个深度层次的轮廓预测。优点:
1、支持各种清晰度和分辨率,通过调整深度层次即可;
2、效率高,算法自主,不是任何 snack、等高线、四叉树等算法;
3、结合聚类算法或分类算法能实现有效识别。

(1)调用方法

int main() { // 3
	ULONGLONG t1, t2;
	int err;
	BmpImage* img;
	unsigned char* outputBytesArray = NULL;
	char url1[200], url2[200];
	int contour_size = 32;  // 轮廓预测范围
	int jielin_ratio = 21;  // 杰林码系数

	const char* fileName = "xibao";

	sprintf_s(url1, 200, "D:\\WJLCoding\\C++\\AI\\WJL Contour Prediction\\TestImage\\%s.bmp", fileName);
	sprintf_s(url2, 200, "D:\\WJLCoding\\C++\\AI\\WJL Contour Prediction\\NewImage\\ContourPrediction-%s-%d-%d.bmp", fileName, contour_size, jielin_ratio);

	// 装载BMP,采用灰度图像
	img = LoadBmpImage(url1);
	outputBytesArray = (unsigned char*)malloc(sizeof(unsigned char) * img->bmpInfoHeader.biWidth * img->bmpInfoHeader.biHeight);
	if (outputBytesArray == NULL) {
		return 0;
	}
	// outputBytesArray全部设置为OxFF
	memset(outputBytesArray, 0xFF, img->bmpInfoHeader.biWidth * img->bmpInfoHeader.biHeight);

	// 灰度图像轮廓预测
	t1 = GetTickCount64();
	err = WJL_GRAY_CONTOUR_PREDICTION(img->bmpInfoHeader.biWidth, img->bmpInfoHeader.biHeight, contour_size, jielin_ratio, img->rgbdatas->ucR, outputBytesArray);
	t2 = GetTickCount64();
	// 耗时
	printf("变换算法总耗时:%lld ms\n", t2 - t1);

	// 释放原始的img->rgbdatas->ucR
	if (img->rgbdatas->ucR) free(img->rgbdatas->ucR);
	// 重新指定
	img->rgbdatas->ucR = outputBytesArray;
	// 然后写入到文件url2中
	err = SaveBmpImage(url2, img);
	// 释放
	if (img->rgbdatas->ucR) free(img->rgbdatas->ucR);
	if (img->rgbdatas) free(img->rgbdatas);
	if (img) free(img);

	system("pause");
	return 0;
}

(2)函数接口和参数说明

#ifndef _WJLCONTOURPREDICTION_H
#define _WJLCONTOURPREDICTION_H

#ifdef	__cplusplus
extern "C" {
#endif

	/****************************************************************************************************************
	标记出图像中图形的轮廓
	输入参数width:灰度图像的宽
	输入参数height:灰度图像的高
	输入参数contour_size:轮廓预测的半径,为0则不进行轮廓预测
	输入参数jielin_ratio:杰林码系数
	输入参数inputBytesArray:灰度图像的数据
	输入参数outputBytesArray:灰度图像的数据
	返回报错值,0表示无错误
	*****************************************************************************************************************/
	int WJL_GRAY_CONTOUR_PREDICTION(long width, long height, int contour_size, int jielin_ratio,  unsigned char* inputBytesArray, unsigned char* outputBytesArray);


#ifdef	__cplusplus
}
#endif

#endif

二、实验一

杰林码系数设定为21(0表示最前景,50表示最背景),轮廓预测范围32,效果如下:
杰林码在荧光细胞识别中的应用(一)_第1张图片
杰林码系数设定为35,轮廓预测范围32,效果如下:

杰林码在荧光细胞识别中的应用(一)_第2张图片
杰林码系数设定为15,轮廓预测范围32,效果如下:
杰林码在荧光细胞识别中的应用(一)_第3张图片

三、实验二

杰林码系数设定为15,轮廓预测范围32,效果如下:
杰林码在荧光细胞识别中的应用(一)_第4张图片
杰林码系数设定为19,轮廓预测范围32,效果如下:
杰林码在荧光细胞识别中的应用(一)_第5张图片
杰林码在荧光细胞识别中的应用(一)_第6张图片
杰林码在荧光细胞识别中的应用(一)_第7张图片

我还测试了真菌、滴虫,均能有效的把图像轮廓获取,根据实际情况需要调整杰林码系数。该算法将在国产细胞扫描仪中应用。并结合加权概率模型聚类算法一同实现识别。
未来应用场景:
1、工业机器识别,如指纹、产品质量检测等等;
2、大型图像识别模型;
3、图像轮廓清晰化处理;
等等。

你可能感兴趣的:(杰林码应用,算法)