From 79f3260b8e0b3214c3e40ff0ecf242633c627bf6 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Tue, 14 Jun 2011 10:26:24 +0000 Subject: [PATCH] fixed bayer pattern picture in cvtColor() description; corrected formula in getGaussianKernel() --- modules/imgproc/doc/filtering.rst | 2 +- modules/imgproc/doc/miscellaneous_transformations.rst | 8 +------- modules/imgproc/doc/pics/bayer.png | Bin 0 -> 19476 bytes 3 files changed, 2 insertions(+), 8 deletions(-) create mode 100644 modules/imgproc/doc/pics/bayer.png diff --git a/modules/imgproc/doc/filtering.rst b/modules/imgproc/doc/filtering.rst index 770a9b0..679c4e6 100644 --- a/modules/imgproc/doc/filtering.rst +++ b/modules/imgproc/doc/filtering.rst @@ -949,7 +949,7 @@ getGaussianKernel :param ksize: Aperture size. It should be odd ( :math:`\texttt{ksize} \mod 2 = 1` ) and positive. - :param sigma: Gaussian standard deviation. If it is non-positive, it is computed from ``ksize`` as \ ``sigma = 0.3*(ksize/2 - 1) + 0.8`` . + :param sigma: Gaussian standard deviation. If it is non-positive, it is computed from ``ksize`` as \ ``sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8`` . :param ktype: Type of filter coefficients. It can be ``CV_32f`` or ``CV_64F`` . The function computes and returns the diff --git a/modules/imgproc/doc/miscellaneous_transformations.rst b/modules/imgproc/doc/miscellaneous_transformations.rst index 862a0d3..8e534d2 100644 --- a/modules/imgproc/doc/miscellaneous_transformations.rst +++ b/modules/imgproc/doc/miscellaneous_transformations.rst @@ -384,9 +384,7 @@ The function can do the following transformations: * Bayer :math:`\rightarrow` RGB ( ``CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR, CV_BayerBG2RGB, CV_BayerGB2RGB, CV_BayerRG2RGB, CV_BayerGR2RGB`` ). The Bayer pattern is widely used in CCD and CMOS cameras. It enables you to get color pictures from a single plane where R,G, and B pixels (sensors of a particular component) are interleaved as follows: - .. math:: - - \newcommand{\Rcell}{\color{red}R} \newcommand{\Gcell}{\color{green}G} \newcommand{\Bcell}{\color{blue}B} \definecolor{BackGray}{rgb}{0.8,0.8,0.8} \begin{array}{ c c c c c } \Rcell & \Gcell & \Rcell & \Gcell & \Rcell \\ \Gcell & \colorbox{BackGray}{\Bcell} & \colorbox{BackGray}{\Gcell} & \Bcell & \Gcell \\ \Rcell & \Gcell & \Rcell & \Gcell & \Rcell \\ \Gcell & \Bcell & \Gcell & \Bcell & \Gcell \\ \Rcell & \Gcell & \Rcell & \Gcell & \Rcell \end{array} + .. image:: pics/bayer.png The output RGB components of a pixel are interpolated from 1, 2, or 4 neighbors of the pixel having the same color. There are several @@ -642,12 +640,8 @@ It makes possible to do a fast blurring or fast block correlation with a variabl As a practical example, the next figure shows the calculation of the integral of a straight rectangle ``Rect(3,3,3,2)`` and of a tilted rectangle ``Rect(5,1,2,3)`` . The selected pixels in the original ``image`` are shown, as well as the relative pixels in the integral images ``sum`` and ``tilted`` . -\begin{center} - .. image:: pics/integral.png -\end{center} - .. index:: threshold .. _threshold: diff --git a/modules/imgproc/doc/pics/bayer.png b/modules/imgproc/doc/pics/bayer.png new file mode 100644 index 0000000000000000000000000000000000000000..92fe2ddb8b57465a8f430847b7c9882de14cb6a1 GIT binary patch literal 19476 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