卷积与协相关之类的方法都很类似,算子有多种,实现各样效果。
并行边缘分割算子有多种,本着在ImgDivision类初始化时,便将该图像的所有类型的算子运算结果得到,使在显示时候可以直接利用的目的,写专用于初始化计算各类算子结果的函数
存储各算子运算结果
//并行边缘分割算子
vector<vector<double>> m_Grad_Roberts;//Roberts算子计算的梯度
vector<vector<double>> m_Grad_Prewitt;//Prewitt算子计算的梯度
vector<vector<double>> m_Grad_Sobel;//Sobel算子计算的梯度
vector<vector<double>> m_Grad_Laplacian4;//Laplacian 4邻域算子计算的梯度
vector<vector<double>> m_Grad_Laplacian8;//Laplacian 8邻域算子计算的梯度 作者:海li月 https://www.bilibili.com/read/cv12814884 出处:bilibili
实现的函数
void ImgDivision::getGradientValue()
{
//Roberts 算子
for(int y = 0; y<m_Img->height()-1; y++)
{
QRgb * line1 = (QRgb *)m_Img->scanLine(y);
QRgb * line2 = (QRgb *)m_Img->scanLine(y+1);
for(int x = 0; x<m_Img->width()-1; x++)
{
double average11 = (qRed(line1[x]) + qGreen(line1[x]) + qBlue(line1[x]))/3.0/255.0;
double average12 = (qRed(line1[x+1]) + qGreen(line1[x+1]) + qBlue(line1[x+1]))/3.0/255.0;
double average21 = (qRed(line2[x])