#include "cips.h"
/* the convolution masks */
short emboss_0_mask[3][3] = {
{-1, 0, 1},
{-1, 1, 1},
{-1, 0, 1} };
short emboss_1_mask[3][3] = {
{ 0, 1, 1},
{-1, 1, 1},
{-1, -1, 0} };
short emboss_2_mask[3][3] = {
{ 1, 1, 0},
{ 1, 1, -1},
{ 0, -1, -1} };
short emboss_3_mask[3][3] = {
{ 1, 0, -1},
{ 1, 1, -1},
{ 1, 0, -1} };
short emboss_4_mask[3][3] = {
{ 0, -1, -1},
{ 1, 1, -1},
{ 1, 1, 0} };
short emboss_5_mask[3][3] = {
{-1, -1, -1},
{ 0, 1, 0},
{ 1, 1, 1} };
short emboss_6_mask[3][3] = {
{-1, -1, 0},
{-1, 1, 1},
{ 0, 1, 1} };
short emboss_7_mask[3][3] = {
{-1, 1, 1},
{-1, 1, 1},
{-1, 1, 1} };
short emboss_8_mask[3][3] = {
{ 1, 1, 1},
{-1, 1, 1},
{-1, -1, 1} };
short emboss_9_mask[3][3] = {
{ 1, 1, 1},
{ 1, 1, -1},
{ 1, -1, -1} };
short emboss_10_mask[3][3] = {
{ 1, 1, -1},
{ 1, 1, -1},
{ 1, 1, -1} };
short emboss_11_mask[3][3] = {
{ 1, -1, -1},
{ 1, 1, -1},
{ 1, 1, 1} };
short emboss_12_mask[3][3] = {
{-1, -1, -1},
{ 1, 1, 1},
{ 1, 1, 1} };
short emboss_13_mask[3][3] = {
{-1, -1, 1},
{-1, 1, 1},
{ 1, 1, 1} };
short **the_image;
short **out_image;
main(argc, argv)
int argc;
char *argv[];
{
...
read_image_array(in_name, the_image);
emboss_convolution(the_image, out_image,
type,
length, width,
bitsperpixel);
write_image_array(out_name, out_image);
...
} /* ends main */
/****************************************
*
* emoboss_convolution(...
*
*****************************************/
emboss_convolution(image, out_image, type,
rows, cols, bitsperpixel)
short **image, **out_image;
int type;
long rows, cols, bitsperpixel;
{
int a, b, i, is_present, j, sum;
short mask[3][3], max, min;
min = 0;
max = 255;
if(bitsperpixel == 4)
max = 16;
/* clear output image array */
for(i=0; i<rows; i++)
for(j=0; j<cols; j++)
out_image[i][j] = image[i][j];
copy_array(type, mask);
for(i=1; i<rows-1; i++){
for(j=1; j<cols-1; j++){
sum = 0;
for(a=-1; a<2; a++){
for(b=-1; b<2; b++){
sum =
sum + image[i+a][j+b] *
mask[a+1][b+1];
}
}
if(sum > max) sum = max;
if(sum < 0) sum = 0;
out_image[i][j] = sum;
if( type >= 7 && type <= 13)
out_image[i][j] =
out_image[i][j]/3;
} /* ends loop over j */
} /* ends loop over i */
} /* ends emboss_convolution */