Surface Roughness Measurement

Hi, I’m using the SurfCharJ 1q plug in to measure surface roughness. I used set scale so set my units to um, but I’m not sure what units the displayed R value results are in. I used set scale and changed to nanometer and got the same R values.
Can anyone help with this?

@david_od

I’m not familiar with this particular tool…

If you cannot find the answer on their website: https://www.gcsca.net/IJ/SurfCharJ.html - then I would advise contacting them directly… gch@gcsca.net

But if they provide an answer… it would be great if you could report back here for other users down-the-road. :slight_smile:

1 Like

Hello @david_od ,

Did you get any reply about the unit??

1 Like

On their website

you can find

LOCAL ROUGHNESS ANALYSIS Measure R-values on the whole surface gives roughness values  according to the ISO 4287/2000 standard:
·        Ra: Arithmetical mean deviation
·        Rq: Root mean square deviation
·        Rku: Kurtosis of the assessed profile
·        Rsk: Skewness of the assessed profile
·        Rv: Lowest valley
·        Rp: Highest peak
·        Rt: The total height of the profile 

I think this values are dimensionless.

The calculation can be found in SurfCharJ_1q.java available on the website.

	public float[] getRoughnessValues(ImageProcessor ipTemp){
		int ww=ipTemp.getWidth();
		int hh=ipTemp.getHeight();
		int N = ww*hh;

		float min = Float.MAX_VALUE;
		float max = -Float.MAX_VALUE;
		float[] rValues = new float[8];
		float ra = 0, rq = 0, sk = 0, ku = 0, rc=0;
		float zMean=calculateMean(ipTemp);
		float zStd = calculateStd(ipTemp,zMean);

		for (int y = 0; y < hh; y++){
			for (int x = 0; x < ww; x++){
				float temp = ipTemp.getPixelValue(x,y);
				float zTemp=temp-zMean;
				sk += sqr3(zTemp/zStd);
				ku += sqr4(zTemp/zStd);
				ra += Math.abs(zTemp);
				rc += temp;
				if (temp<min) min = temp;
				if (temp>max) max = temp;
			}
		}
		// Calculate Roughness stats (Ra, Rq, Rsk, Rku)
		rValues[1] = (float)(ra/(N));
		rValues[0] = (float)(zStd);
		//float Pq= rValues[0];

		rValues[2] = (float)(sk/N);
		rValues[3] = (float)((ku/N)-3);
		rValues[4] = min;
		rValues[5] = max;
		rValues[6] = max-min;
		rValues[7] = (float)(rc/(N));
		
		return rValues;
	}
1 Like