⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imconv.h

📁 基于图匹配理论的图像分割
💻 H
字号:
/* image conversion */#ifndef CONV_H#define CONV_H#include <climits>#include "image.h"#include "imutil.h"#include "misc.h"#define	RED_WEIGHT	0.299#define GREEN_WEIGHT	0.587#define BLUE_WEIGHT	0.114static image<uchar> *imageRGBtoGRAY(image<rgb> *input) {  int width = input->width();  int height = input->height();  image<uchar> *output = new image<uchar>(width, height, false);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      imRef(output, x, y) = (uchar)	(imRef(input, x, y).r * RED_WEIGHT +	 imRef(input, x, y).g * GREEN_WEIGHT +	 imRef(input, x, y).b * BLUE_WEIGHT);    }  }  return output;}static image<rgb> *imageGRAYtoRGB(image<uchar> *input) {  int width = input->width();  int height = input->height();  image<rgb> *output = new image<rgb>(width, height, false);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      imRef(output, x, y).r = imRef(input, x, y);      imRef(output, x, y).g = imRef(input, x, y);      imRef(output, x, y).b = imRef(input, x, y);    }  }  return output;  }static image<float> *imageUCHARtoFLOAT(image<uchar> *input) {  int width = input->width();  int height = input->height();  image<float> *output = new image<float>(width, height, false);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      imRef(output, x, y) = imRef(input, x, y);    }  }  return output;  }static image<float> *imageINTtoFLOAT(image<int> *input) {  int width = input->width();  int height = input->height();  image<float> *output = new image<float>(width, height, false);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      imRef(output, x, y) = imRef(input, x, y);    }  }  return output;  }static image<uchar> *imageFLOATtoUCHAR(image<float> *input, 				       float min, float max) {  int width = input->width();  int height = input->height();  image<uchar> *output = new image<uchar>(width, height, false);  if (max == min)    return output;  float scale = UCHAR_MAX / (max - min);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      uchar val = (uchar)((imRef(input, x, y) - min) * scale);      imRef(output, x, y) = bound(val, (uchar)0, (uchar)UCHAR_MAX);    }  }  return output;}static image<uchar> *imageFLOATtoUCHAR(image<float> *input) {  float min, max;  min_max(input, &min, &max);  return imageFLOATtoUCHAR(input, min, max);}static image<long> *imageUCHARtoLONG(image<uchar> *input) {  int width = input->width();  int height = input->height();  image<long> *output = new image<long>(width, height, false);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      imRef(output, x, y) = imRef(input, x, y);    }  }  return output;  }static image<uchar> *imageLONGtoUCHAR(image<long> *input, long min, long max) {  int width = input->width();  int height = input->height();  image<uchar> *output = new image<uchar>(width, height, false);  if (max == min)    return output;  float scale = UCHAR_MAX / (float)(max - min);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      uchar val = (uchar)((imRef(input, x, y) - min) * scale);      imRef(output, x, y) = bound(val, (uchar)0, (uchar)UCHAR_MAX);    }  }  return output;}static image<uchar> *imageLONGtoUCHAR(image<long> *input) {  long min, max;  min_max(input, &min, &max);  return imageLONGtoUCHAR(input, min, max);}static image<uchar> *imageSHORTtoUCHAR(image<short> *input, 					short min, short max) {  int width = input->width();  int height = input->height();  image<uchar> *output = new image<uchar>(width, height, false);  if (max == min)    return output;  float scale = UCHAR_MAX / (float)(max - min);  for (int y = 0; y < height; y++) {    for (int x = 0; x < width; x++) {      uchar val = (uchar)((imRef(input, x, y) - min) * scale);      imRef(output, x, y) = bound(val, (uchar)0, (uchar)UCHAR_MAX);    }  }  return output;}static image<uchar> *imageSHORTtoUCHAR(image<short> *input) {  short min, max;  min_max(input, &min, &max);  return imageSHORTtoUCHAR(input, min, max);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -