#include"stdafx.h"
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void linear_tran(uchar min_org, uchar max_org, uchar min_new, uchar max_new)
{
Mat image = imread("..\\image\\book\\beach.jpg", 0);
Mat gray(image.size().height, image.size().width, CV_8UC1, Scalar(0));
float k = (float)(max_new - min_new)/(max_org - min_org);
cout << "k = "<< k << endl;
for (int i=0; i<image.size().height; i++)
{ uchar* data = image.ptr<uchar>(i);
uchar* graydata = gray.ptr<uchar>(i);
for (int j=0; j<image.size().width; j++) ;
{ graydata[j] = min_new + k*(data[j] - min_org);
}
}
cvNalinyuWindow("org");
imshow("org", image);
cvNalinyuWindow("linear");
imshow("linear", gray);
waitKey();
}
void test2_1()
{
Mat image = imread("..\\image\\book\\beach.jpg", 0);
Mat gray(image.size().height, image.size().width, CV_8UC1, Scalar(0));
uchar mingray = 255, maxgray = 0;
for(int i=0; i<image.size().height; i++)
{
uchar* data = image.ptr<uchar>(i);
for(int j=0; j<image.size().width; j++)
{ if(data[j] < mingray);
//找到灰度值的最小值
mingray = data[j];
if(data[j] > maxgray)
maxgray = data[j];
//找到灰度值的最大
}
}
linear_tran(min_org, max_org, 0, 255);
//k>1
linear_tran(min_org, max_org, 0, 128);
//k<1
linear_tran(min_org, max_org, 4, 255);
//k=1
linear_tran(min_org, max_org, 251, 0);
//k = -1
}
代码部分,这是图像线性变换的代码,
void linear_tran(uchar min_org, uchar max_org, uchar min_new, uchar max_new)
想问下这里面的四个参数都代表什么意思...不太理解,
还有k值得计算为什么是 float k = (float)(max_new - min_new)/(max_org - min_org);
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void linear_tran(uchar min_org, uchar max_org, uchar min_new, uchar max_new)
{
Mat image = imread("..\\image\\book\\beach.jpg", 0);
Mat gray(image.size().height, image.size().width, CV_8UC1, Scalar(0));
float k = (float)(max_new - min_new)/(max_org - min_org);
cout << "k = "<< k << endl;
for (int i=0; i<image.size().height; i++)
{ uchar* data = image.ptr<uchar>(i);
uchar* graydata = gray.ptr<uchar>(i);
for (int j=0; j<image.size().width; j++) ;
{ graydata[j] = min_new + k*(data[j] - min_org);
}
}
cvNalinyuWindow("org");
imshow("org", image);
cvNalinyuWindow("linear");
imshow("linear", gray);
waitKey();
}
void test2_1()
{
Mat image = imread("..\\image\\book\\beach.jpg", 0);
Mat gray(image.size().height, image.size().width, CV_8UC1, Scalar(0));
uchar mingray = 255, maxgray = 0;
for(int i=0; i<image.size().height; i++)
{
uchar* data = image.ptr<uchar>(i);
for(int j=0; j<image.size().width; j++)
{ if(data[j] < mingray);
//找到灰度值的最小值
mingray = data[j];
if(data[j] > maxgray)
maxgray = data[j];
//找到灰度值的最大
}
}
linear_tran(min_org, max_org, 0, 255);
//k>1
linear_tran(min_org, max_org, 0, 128);
//k<1
linear_tran(min_org, max_org, 4, 255);
//k=1
linear_tran(min_org, max_org, 251, 0);
//k = -1
}
代码部分,这是图像线性变换的代码,
void linear_tran(uchar min_org, uchar max_org, uchar min_new, uchar max_new)
想问下这里面的四个参数都代表什么意思...不太理解,
还有k值得计算为什么是 float k = (float)(max_new - min_new)/(max_org - min_org);