Skip to content

Commit

Permalink
CF 1.5
Browse files Browse the repository at this point in the history
Optimizing some filters.
  • Loading branch information
DiegoCatalano committed Oct 12, 2015
1 parent 71df6f4 commit 34284d3
Show file tree
Hide file tree
Showing 11 changed files with 284 additions and 353 deletions.
54 changes: 23 additions & 31 deletions Catalano.Android.Image/src/Catalano/Imaging/Filters/Intersect.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Catalano Android Imaging Library
// Catalano Imaging Library
// The Catalano Framework
//
// Copyright © Diego Catalano, 2015
Expand Down Expand Up @@ -39,9 +39,7 @@ public class Intersect implements IBaseInPlace{
/**
* Initialize a new instance of the Intersect class.
*/
public Intersect() {

}
public Intersect() {}

/**
* Initialize a new instance of the Intersect class.
Expand All @@ -62,46 +60,40 @@ public void setOverlayImage(FastBitmap overlayImage) {
@Override
public void applyInPlace(FastBitmap sourceImage){

int width = sourceImage.getWidth();
int height = sourceImage.getHeight();
int sizeOrigin = width * height;
int size = sourceImage.getSize();
int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight();
if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) {
if (sizeOrigin == sizeDestination) {
if (size == sizeDestination) {

int l;
for (int x = 0; x < height; x++) {
for (int y = 0; y < width; y++) {
l = overlayImage.getGray(x, y);
if (l < sourceImage.getGray(x, y)) {
sourceImage.setGray(x, y, l);
}
for (int i = 0; i < size; i++) {
l = overlayImage.getGray(i);
if (l < sourceImage.getGray(i)) {
sourceImage.setGray(i, l);
}
}
}
}
else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){
if (sizeOrigin == sizeDestination) {
if (size == sizeDestination) {

int r,g,b;
for (int x = 0; x < height; x++) {
for (int y = 0; y < width; y++) {
r = overlayImage.getRed(x, y);
g = overlayImage.getGreen(x, y);
b = overlayImage.getBlue(x, y);

if (r < sourceImage.getRed(x, y)) {
sourceImage.setRed(x, y, r);
}
if (g < sourceImage.getGreen(x, y)) {
sourceImage.setGreen(x, y, g);
}
if (b < sourceImage.getBlue(x, y)) {
sourceImage.setBlue(x, y, b);
}
for (int i = 0; i < size; i++) {
r = overlayImage.getRed(i);
g = overlayImage.getGreen(i);
b = overlayImage.getBlue(i);

if (r < sourceImage.getRed(i)) {
sourceImage.setRed(i, r);
}
if (g < sourceImage.getGreen(i)) {
sourceImage.setGreen(i, g);
}
if (b < sourceImage.getBlue(i)) {
sourceImage.setBlue(i, b);
}
}
}
}
}
}
}
54 changes: 23 additions & 31 deletions Catalano.Android.Image/src/Catalano/Imaging/Filters/Merge.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Catalano Android Imaging Library
// Catalano Imaging Library
// The Catalano Framework
//
// Copyright © Diego Catalano, 2015
Expand Down Expand Up @@ -39,9 +39,7 @@ public class Merge implements IBaseInPlace{
/**
* Initialize a new instance of the Merge class.
*/
public Merge() {

}
public Merge() {}

/**
* Initialize a new instance of the Merge class.
Expand All @@ -62,44 +60,38 @@ public void setOverlayImage(FastBitmap overlayImage) {
@Override
public void applyInPlace(FastBitmap sourceImage){

int width = sourceImage.getWidth();
int height = sourceImage.getHeight();
int sizeOrigin = width * height;
int size = sourceImage.getSize();
int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight();
if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) {
if (sizeOrigin == sizeDestination) {
if (size == sizeDestination) {
int l;
for (int x = 0; x < height; x++) {
for (int y = 0; y < width; y++) {
l = overlayImage.getGray(x, y);
if (l > sourceImage.getGray(x, y)) {
sourceImage.setGray(x, y, l);
}
for (int i = 0; i < size; i++) {
l = overlayImage.getGray(i);
if (l > sourceImage.getGray(i)) {
sourceImage.setGray(i, l);
}
}
}
}
else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){
if (sizeOrigin == sizeDestination) {
if (size == sizeDestination) {
int r,g,b;
for (int x = 0; x < height; x++) {
for (int y = 0; y < width; y++) {
r = overlayImage.getRed(x, y);
g = overlayImage.getGreen(x, y);
b = overlayImage.getBlue(x, y);

if (r > sourceImage.getRed(x, y)) {
sourceImage.setRed(x, y, r);
}
if (g > sourceImage.getGreen(x, y)) {
sourceImage.setGreen(x, y, g);
}
if (b > sourceImage.getBlue(x, y)) {
sourceImage.setBlue(x, y, b);
}
for (int i = 0; i < size; i++) {
r = overlayImage.getRed(i);
g = overlayImage.getGreen(i);
b = overlayImage.getBlue(i);

if (r > sourceImage.getRed(i)) {
sourceImage.setRed(i, r);
}
if (g > sourceImage.getGreen(i)) {
sourceImage.setGreen(i, g);
}
if (b > sourceImage.getBlue(i)) {
sourceImage.setBlue(i, b);
}
}
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Catalano Android Imaging Library
// Catalano Imaging Library
// The Catalano Framework
//
// Copyright © Diego Catalano, 2015
Expand Down Expand Up @@ -53,47 +53,41 @@ public void applyInPlace(FastBitmap fastBitmap) {

if(fastBitmap.isRGB()){

int width = fastBitmap.getWidth();
int height = fastBitmap.getHeight();
int size = fastBitmap.getSize();

double kr = 0, kg = 0, kb = 0;
int tr = 0, tg = 0, tb = 0;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {

if (fastBitmap.getRed(i, j) > threshold){
kr += fastBitmap.getRed(i, j);
tr++;
}

if (fastBitmap.getGreen(i, j) > threshold){
kg += fastBitmap.getGreen(i, j);
tg++;
}

if (fastBitmap.getBlue(i, j) > threshold){
kb += fastBitmap.getBlue(i, j);
tb++;
}
for (int i = 0; i < size; i++) {
if (fastBitmap.getRed(i) > threshold){
kr += fastBitmap.getRed(i);
tr++;
}

if (fastBitmap.getGreen(i) > threshold){
kg += fastBitmap.getGreen(i);
tg++;
}

if (fastBitmap.getBlue(i) > threshold){
kb += fastBitmap.getBlue(i);
tb++;
}
}

kr = 255 / (kr/tr);
kg = 255 / (kg/tg);
kb = 255 / (kb/tb);

for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
double r = kr * fastBitmap.getRed(i, j);
double g = kg * fastBitmap.getGreen(i, j);
double b = kb * fastBitmap.getBlue(i, j);

if (r > 255) r = 255;
if (g > 255) g = 255;
if (b > 255) b = 255;

fastBitmap.setRGB(i, j, (int)r, (int)g, (int)b);
}
for (int i = 0; i < size; i++) {
double r = kr * fastBitmap.getRed(i);
double g = kg * fastBitmap.getGreen(i);
double b = kb * fastBitmap.getBlue(i);

if (r > 255) r = 255;
if (g > 255) g = 255;
if (b > 255) b = 255;

fastBitmap.setRGB(i, (int)r, (int)g, (int)b);
}
}
else{
Expand Down
56 changes: 24 additions & 32 deletions Catalano.Android.Image/src/Catalano/Imaging/Filters/Morph.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Catalano Android Imaging Library
// Catalano Imaging Library
// The Catalano Framework
//
// Copyright © Diego Catalano, 2015
Expand Down Expand Up @@ -40,9 +40,7 @@ public class Morph implements IBaseInPlace{
/**
* Initialize a new instance of the BottomHat class.
*/
public Morph() {

}
public Morph() {}

/**
* Initialize a new instance of the BottomHat class.
Expand Down Expand Up @@ -81,47 +79,41 @@ public void setSourcePercent(double sourcePercent) {
@Override
public void applyInPlace(FastBitmap sourceImage){

int width = sourceImage.getWidth();
int height = sourceImage.getHeight();
int sizeOrigin = width * height;
int size = sourceImage.getSize();
int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight();
if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) {
if (sizeOrigin == sizeDestination) {
if (size == sizeDestination) {
int lS,lO;
//percentage of overlay image
double q = 1 - sourcePercent;
for (int x = 0; x < height; x++) {
for (int y = 0; y < width; y++) {
lS = sourceImage.getGray(x, y);
lO = overlayImage.getGray(x, y);
sourceImage.setGray(x, y, (int)( ( sourcePercent * ( lS ) ) + ( q * ( lO ) )));
}
for (int i = 0; i < size; i++) {
lS = sourceImage.getGray(i);
lO = overlayImage.getGray(i);
sourceImage.setGray(i, (int)( ( sourcePercent * ( lS ) ) + ( q * ( lO ) )));
}
}
}
else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){
if (sizeOrigin == sizeDestination) {
if (size == sizeDestination) {
int rS, gS, bS,rO, gO, bO;
//percentage of overlay image
double q = 1 - sourcePercent;
for (int x = 0; x < height; x++) {
for (int y = 0; y < width; y++) {
rS = sourceImage.getRed(x, y);
gS = sourceImage.getGreen(x, y);
bS = sourceImage.getBlue(x, y);

rO = overlayImage.getRed(x, y);
gO = overlayImage.getGreen(x, y);
bO = overlayImage.getBlue(x, y);

int r = (int)( ( sourcePercent * ( rS ) ) + ( q * ( rO )));
int g = (int)( ( sourcePercent * ( gS ) ) + ( q * ( gO )));
int b = (int)( ( sourcePercent * ( bS ) ) + ( q * ( bO )));

sourceImage.setRGB(x, y, r, g, b);
}
for (int i = 0; i < size; i++) {
rS = sourceImage.getRed(i);
gS = sourceImage.getGreen(i);
bS = sourceImage.getBlue(i);

rO = overlayImage.getRed(i);
gO = overlayImage.getGreen(i);
bO = overlayImage.getBlue(i);

int r = (int)( ( sourcePercent * ( rS ) ) + ( q * ( rO )));
int g = (int)( ( sourcePercent * ( gS ) ) + ( q * ( gO )));
int b = (int)( ( sourcePercent * ( bS ) ) + ( q * ( bO )));

sourceImage.setRGB(i, r, g, b);
}
}
}
}
}
}
Loading

0 comments on commit 34284d3

Please sign in to comment.