Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

So I was reading about Java Convolve and someone said that it may be faster than the MMX / SSE implementation. In it one of the comments had a kernal array and said it was seperable.

  1. What is a seperable kernel? How is this useful for image processing?
  2. What is MMX/SSE? The wikipedia page lists them as instruction sets. Are they specificially designed for image processing?
  3. How would you transmit a MMX/SSE format (I assume) data set through TCP?


share|improve this question
SSE is a vector (SIMD) instruction set for x86. It's not a data format or something that is transmitted; that's like asking how to send assembly. As for a separable image filter, read-up on Gaussian blur. I also recommend you study computer organization to learn why your question doesn't make any sense. – chrisaycock May 19 '12 at 19:47
@chrisaycock I know of gaussian blur using a matrix and applying that so a gaussian mask. How do you seperate the pixel values into two and then apply if G(x,y) as per the wikipedia article requires values from both the x and y dimensions? – Eiyrioü von Kauyf May 20 '12 at 19:44

MMX/SSE is a set of instructions built into Intel processors for applying a single operation simultaneously to several numbers. In other words it is a form of parallelism. I don't think the statement "Java Convolve is faster than MMX/SSE" implementation" makes any sense as a general statement. You'd have to compare a specific Java implementation to a specific MMX/SSE implementation. Heck, there's nothing to keep the Java Virtual Machine on a chip supporting MMX/SSE from using MMX/SSE instructions, so it isn't an either/or situation. It also doesn't make sense to ask about an MMX/SSE format. MMX/SSE operates on integers and floating point numbers.

A 2-dimensional kernel is separable if it can be split into two independent, one-dimensional kernels. This can be used to speed up the calculations involving the kernel.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.