zoukankan      html  css  js  c++  java
  • LBP特征处理(一)

    LBP特征原理:

    这里相当于将周边像素相对于中心像素阈值二值化,后编成八位二进制码处理

     

     1 #include <opencv2/opencv.hpp>
     2 #include <iostream>
     3 #include "math.h"
     4 
     5 using namespace cv;
     6 using namespace std;
     7 
     8 Mat src, gray_src;
     9 
    10 int main(int argc, char** argv) {
    11     src = imread("L:/opencv_picture/13.jpg");
    12     if (src.empty()) {
    13         printf("could not load image...
    ");
    14         return -1;
    15     }
    16     const char* output_tt = "LBP Result";
    17     namedWindow("input image", CV_WINDOW_AUTOSIZE);
    18     namedWindow(output_tt, CV_WINDOW_AUTOSIZE);
    19     imshow("input image", src);
    20 
    21     // convert to gray  灰度图像
    22     cvtColor(src, gray_src, COLOR_BGR2GRAY);
    23     int width = gray_src.cols;
    24     int height = gray_src.rows;
    25 
    26     // 基本LBP演示
    27     //大框架里采用3×3的滑框,所以上下左右都要减一行出来所以变成 row-2 ,cols-2 
    28     Mat lbpImage = Mat::zeros(gray_src.rows - 2, gray_src.cols - 2, CV_8UC1);
    29     for (int row = 1; row < height - 1; row++) {
    30         for (int col = 1; col < width - 1; col++) {
    31             uchar c = gray_src.at<uchar>(row, col);
    32             uchar code = 0;
    33             code |= (gray_src.at<uchar>(row - 1, col - 1) > c) << 7;
    //    gray_src.at() 的像素值与阈值c比较,大于为1,小于等于为0
    34 // a |= b 按位取或以后把值赋给a 35 // a |= b << 7 将b向左位移7位以后,将a与b按位取或以后把值赋给a 36 code |= (gray_src.at<uchar>(row - 1, col) > c) << 6; 37 code |= (gray_src.at<uchar>(row - 1, col + 1) > c) << 5; 38 code |= (gray_src.at<uchar>(row, col + 1) > c) << 4; 39 code |= (gray_src.at<uchar>(row + 1, col + 1) > c) << 3; 40 code |= (gray_src.at<uchar>(row + 1, col) > c) << 2; 41 code |= (gray_src.at<uchar>(row + 1, col - 1) > c) << 1; 42 code |= (gray_src.at<uchar>(row, col - 1) > c) << 0; 43 lbpImage.at<uchar>(row - 1, col - 1) = code; 44 //code为8位的二进制数,相当于LBP图像周边像素加权后的像素值 45 } 46 } 47 imshow(output_tt, lbpImage); 48 49 waitKey(0); 50 return 0; 51 }

    实验结果     

    原图像:                                                                                 LBP处理:

                          

  • 相关阅读:
    http数据返回值
    刷新 返回
    微信平台上遇到的bug
    iscroll修改
    iscroll
    a标签的herf和click事件
    ios9+xcode7 适配笔记
    xsd、wsdl生成C#类的命令行工具使用方法
    xcode更新,想想也是醉了
    关于#define预处理指令的一个问题
  • 原文地址:https://www.cnblogs.com/Jack-Elvis/p/11813122.html
Copyright © 2011-2022 走看看