Introduce ColorMode enum
This commit is contained in:
@@ -26,7 +26,7 @@ import org.opencv.imgproc.Imgproc
|
||||
import org.opencv.imgproc.Imgproc.fillConvexPoly
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
fun isColoredDocument(
|
||||
fun autoColorMode(
|
||||
img: Mat,
|
||||
mask: Mask,
|
||||
quad: Quad,
|
||||
@@ -34,7 +34,7 @@ fun isColoredDocument(
|
||||
proportionThreshold: Double = 0.0003,
|
||||
luminanceMin: Double = 40.0,
|
||||
luminanceMax: Double = 180.0
|
||||
): Boolean {
|
||||
): ColorMode {
|
||||
|
||||
// Work on a reasonable size (for correct performance)
|
||||
val resizedImg = resizeForMaxPixels(img, 1024.0 * 768.0)
|
||||
@@ -90,10 +90,13 @@ fun isColoredDocument(
|
||||
restrictedMask.release()
|
||||
docMask.release()
|
||||
|
||||
if (totalPixels == 0) return false
|
||||
if (totalPixels == 0) return ColorMode.GRAYSCALE
|
||||
|
||||
val proportion = coloredPixels.toDouble() / totalPixels.toDouble()
|
||||
return proportion > proportionThreshold
|
||||
return if (proportion > proportionThreshold)
|
||||
ColorMode.COLOR
|
||||
else
|
||||
ColorMode.GRAYSCALE
|
||||
}
|
||||
|
||||
private fun chroma(a: Mat, b: Mat): Mat {
|
||||
|
||||
@@ -154,7 +154,7 @@ fun extractDocument(
|
||||
inputMat: Mat,
|
||||
quad: Quad,
|
||||
rotationDegrees: Int,
|
||||
isColored: Boolean,
|
||||
colorMode: ColorMode,
|
||||
maxPixels: Long,
|
||||
): Mat {
|
||||
val widthTop = norm(quad.topLeft, quad.topRight)
|
||||
@@ -184,7 +184,7 @@ fun extractDocument(
|
||||
Imgproc.warpPerspective(inputMat, warped, transform, outputSize)
|
||||
|
||||
val resized = resizeForMaxPixels(warped, maxPixels.toDouble())
|
||||
val enhanced = enhanceCapturedImage(resized, isColored)
|
||||
val enhanced = enhanceCapturedImage(resized, colorMode)
|
||||
val rotated = rotate(enhanced, rotationDegrees)
|
||||
|
||||
warped.release()
|
||||
|
||||
@@ -25,11 +25,15 @@ import org.opencv.imgproc.Imgproc
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
fun enhanceCapturedImage(img: Mat, isColored: Boolean): Mat {
|
||||
return if (isColored) {
|
||||
multiScaleRetinexOnL(img)
|
||||
} else {
|
||||
enhanceGrayscaleImage(img)
|
||||
enum class ColorMode {
|
||||
COLOR,
|
||||
GRAYSCALE,
|
||||
}
|
||||
|
||||
fun enhanceCapturedImage(img: Mat, colorMode: ColorMode): Mat {
|
||||
return when (colorMode) {
|
||||
ColorMode.COLOR -> multiScaleRetinexOnL(img)
|
||||
ColorMode.GRAYSCALE -> enhanceGrayscaleImage(img)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user