task 8.2
This commit is contained in:
parent
f8db769ec3
commit
ee6999b095
@ -102,4 +102,48 @@ object ImageFilters {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def getAvgInPixel(a: Array[Array[Color]], pixelSize: Int, px: Int, py: Int): Color = {
|
||||||
|
val width: Int = a.length
|
||||||
|
val height: Int = if (width == 0) 0 else a(0).length
|
||||||
|
var r: Double = 0
|
||||||
|
var g: Double = 0
|
||||||
|
var b: Double = 0
|
||||||
|
var cnt: Int = 0
|
||||||
|
for (x: Int <- px*pixelSize until (px+1)*pixelSize) {
|
||||||
|
for (y: Int <- py*pixelSize until (py+1)*pixelSize) {
|
||||||
|
if (x < width && y < height) {
|
||||||
|
cnt += 1
|
||||||
|
r += a(x)(y).getRed
|
||||||
|
g += a(x)(y).getGreen
|
||||||
|
b += a(x)(y).getBlue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Color((r/cnt).toInt, (g/cnt).toInt, (b/cnt).toInt)
|
||||||
|
}
|
||||||
|
def pixelize(a: Array[Array[Color]], pixelSize: Int): Array[Array[Color]] = {
|
||||||
|
val width: Int = a.length
|
||||||
|
val height: Int = if (width == 0) 0 else a(0).length
|
||||||
|
val hPixels: Int = Math.ceil(width.toDouble/pixelSize).toInt
|
||||||
|
val vPixels: Int = Math.ceil(height.toDouble/pixelSize).toInt
|
||||||
|
val pixels: Array[Array[Color]] = Array.ofDim[Color](hPixels, vPixels)
|
||||||
|
for (x: Int <- 0 until hPixels) {
|
||||||
|
for (y: Int <- 0 until vPixels) {
|
||||||
|
pixels(x)(y) = getAvgInPixel(a, pixelSize, x, y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
colorFilter(a, (col, x, y, w, h) => pixels(x/pixelSize)(y/pixelSize))
|
||||||
|
}
|
||||||
|
|
||||||
|
def pixelize(a: Array[Array[Color]], pixelSize: Int, x1: Int, y1: Int, x2: Int, y2: Int): Array[Array[Color]] = {
|
||||||
|
val pixelated: Array[Array[Color]] = pixelize(a, pixelSize)
|
||||||
|
colorFilter(a, (col, x, y, w, h) => {
|
||||||
|
if (x1 <= x && x <= x2 && y1 <= y && y <= y2) {
|
||||||
|
pixelated(x)(y)
|
||||||
|
}
|
||||||
|
else col
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,10 +40,15 @@ object ImageProcessingApp extends App {
|
|||||||
sobel.setPixelsBW(ImageFilters.sobel(org.getPixelsBW(), 0.3))
|
sobel.setPixelsBW(ImageFilters.sobel(org.getPixelsBW(), 0.3))
|
||||||
noise.setPixelsBW(ImageFilters.noise(org.getPixelsBW(), 30))*/
|
noise.setPixelsBW(ImageFilters.noise(org.getPixelsBW(), 30))*/
|
||||||
|
|
||||||
val imageFile: String = "./res/collins_eileen.png"
|
/*val imageFile: String = "./res/collins_eileen.png"
|
||||||
val maskFile: String = "./res/mask.png"
|
val maskFile: String = "./res/mask.png"
|
||||||
val org = new ImageGraphics(imageFile, "Original", -768, -512)
|
val org = new ImageGraphics(imageFile, "Original", -768, -512)
|
||||||
val mask = new ImageGraphics(maskFile, "Mask", -256, -512)
|
val mask = new ImageGraphics(maskFile, "Mask", -256, -512)
|
||||||
val masked = new ImageGraphics(imageFile, "Masked", 256, -512)
|
val masked = new ImageGraphics(imageFile, "Masked", 256, -512)
|
||||||
masked.setPixelsColor(ImageFilters.mask(org.getPixelsColor(), mask.getPixelsBW()))
|
masked.setPixelsColor(ImageFilters.mask(org.getPixelsColor(), mask.getPixelsBW()))*/
|
||||||
|
|
||||||
|
val imageFile: String = "./res/grace_hopper.jpg"
|
||||||
|
val org = new ImageGraphics(imageFile, "Original", -768, -512)
|
||||||
|
val pixelated = new ImageGraphics(imageFile, "Pixelated", -256, -512)
|
||||||
|
pixelated.setPixelsColor(ImageFilters.pixelize(org.getPixelsColor(), 30, 130, 120, 400, 230))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user