最大最小值滤波
最大最小值濾波
最大最小值濾波是一種比較保守的圖像處理手段,與中值濾波類似,首先要排序周圍像素和中心像素值,然后將中心像素值與最小和最大像素值比較,如果比最小值小,則替換中心像素為最小值,如果中心像素比最大值大,則替換中心像素為最大值。一個Kernel矩陣為3X3的最大最小值濾波如下:
?
?
//最大最小值濾波function maxMin(imgData, size) {pixelData = tmppixelData = imgData.data,size = size || 3;for (var i = 0; i < canvas.height; i++) {for (var j = 0; j < canvas.width; j++) {var tempR = [],tempG = [],tempB = [];for (var dx = 0; dx < size; dx++) {for (var dy = 0; dy < size; dy++) {var x = i + dx;var y = j + dy;var p = x * canvas.width + y;if (!(dx == ~~(size / 2) && dy == ~~(size / 2))) {tempR.push(tmppixelData[p * 4 + 0])tempG.push(tmppixelData[p * 4 + 1])tempB.push(tmppixelData[p * 4 + 2])}}}tempR.sort();tempG.sort();tempB.sort();var p = i * canvas.width + j;pixelData[p * 4 + 0] = tmppixelData[p * 4 + 0] > tempR[tempR.length - 1] ? tempR[tempR.length - 1] : tmppixelData[p * 4 + 0] < tempR[0] ? tempR[0] : tmppixelData[p * 4 + 0];pixelData[p * 4 + 1] = tmppixelData[p * 4 + 1] > tempG[tempG.length - 1] ? tempG[tempG.length - 1] : tmppixelData[p * 4 + 1] < tempG[0] ? tempG[0] : tmppixelData[p * 4 + 1];pixelData[p * 4 + 2] = tmppixelData[p * 4 + 2] > tempB[tempB.length - 1] ? tempB[tempB.length - 1] : tmppixelData[p * 4 + 2] < tempB[0] ? tempB[0] : tmppixelData[p * 4 + 2];}}imgData.data = pixelData;return imgData;}
?
轉(zhuǎn)載于:https://www.cnblogs.com/ckAng/p/10904407.html
總結(jié)
- 上一篇: “欲暮槿先萎”下一句是什么
- 下一篇: 求一个对偶个性签名