const getV=require('./getV') const numTobase62=require('./numTobase62') function getUniformLBPMap() { const map={} let index=0; for(let i=0;i<256;i++){ let str=i.toString(2); str='0'.repeat(8-str.length)+str; let first=str[0] let count=0 for(let j=1;j<str.length;j++){ if(first!==str[j]){ first=str[j]; count++ } } if(count<3){ map[str]=index++; }else{ map[str]=58 } } return map; } const uniformLBPMap=getUniformLBPMap() function getLbpData(grayData) { const posArr=[ [-1,-1], [0,-1], [1,-1], [1,0], [1,1], [0,1], [-1,1], [-1,0], ] const rect={ grayData.width, height:grayData.height, data:[] } for(let y=0;y<grayData.height;y++){ for(let x=0;x<grayData.width;x++){ const v1=getV(x,y,grayData); const arr= posArr.map(function (arr) { const v2=getV(arr[0]+x,arr[1]+y,grayData); if(v2>v1){ return 1 }else{ return 0 } }) rect.data.push(parseInt(arr.join(''),2)) } } return rect; } function getUniformLbpData(grayData) { const posArr=[ [-1,-1], [0,-1], [1,-1], [1,0], [1,1], [0,1], [-1,1], [-1,0], ] const rect={ grayData.width, height:grayData.height, data:[] } for(let y=0;y<grayData.height;y++){ for(let x=0;x<grayData.width;x++){ const v1=getV(x,y,grayData); const arr= posArr.map(function (arr) { const v2=getV(arr[0]+x,arr[1]+y,grayData); if(v2>v1){ return 1 }else{ return 0 } }) const num=uniformLBPMap[arr.join('')] rect.data.push(numTobase62[num]) } } return rect; } module.exports={ getLbpData,getUniformLbpData }