Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCTION
1.INTRODUCTION
In recent years, it is much easier to alter the content of digital images than before
using the popular image editing computer software. Some of these images are
irrational with respect to their content, making their fakery obvious to human.
However, many of the altered images can not be easily determined as real or
fake. Fake images are loosely defined as images that do not express the original
content . In other words, what human saw is not necessarily believable. Like it or
not, fake images are everywhere, such as those in movies, advertisements, etc.
There is no general model to detect them, since the production of fake images
leaves no visual clues of fakery. Fig. 1 gives some examples of fake images,
which show that fake images are consistent in their signal characteristic with real
images, and only their contents are exaggerated. To the fake images that are
produced for the sake of cheating, especially for political advantage, they can
barely be distinguished only based on their content.
Some similar concepts with image fakery have been introduced in the past few
years, such as digital forgery and image splicing . In digital forgeries are
referred to the manipulation and alteration of digital images, and method to
detect traces of resampling is proposed to expose digital forgeries. Furthermore,
some other statistical tools for detecting digital forgeries are also proposed and
analyzed in including techniques employing the inconsistences in digital camera
imaging techniques digital image sampling techniques, the direction of point light
, principal component analysis and higher-order wavelet statistics . In [an image
splicing model is proposed to combine different objects in images into a new
image. Aiming at detecting spliced images a statistical model using bicoherence
feature has been proposed in which was originally designed for detecting human
speech signal.
Practically, it is hard to say whether an image is real or fake only from viewing the
content of the image, because the purpose of creating fake images is to alter the
content of an image by adding, removing or replacing some objects in the image,
2
so that the altered image looks like a real image. For Fig. 1(a), it is illogical for a
flying hawk hanging a bomb, so it may be easily concluded that this image is
fake. The same conclusion can be applied to Fig. 1(b). Unfortunately, most of
the fake images can not be distinguished visually and appropriate methods
should be developed to detect them.
CHAPTER-2
AIM AND SCOPE
CHAPTER-3
DIGITAL IMAGE PROCESSING
limiting & somewhat artificial boundary. The area of image analysis (image
understanding) is in between image processing & computer vision.
There are no clear-cut boundaries in the continuum from image
processing at one end to complete vision at the other. However, one useful
paradigm is to consider three types of computerized processes in this
continuum: low-, mid-, & high-level processes. Low-level process involves
primitive operations such as image processing to reduce noise, contrast
enhancement & image sharpening. A low- level process is characterized by the
fact that both its inputs & outputs are images. Mid-level process on images
involves tasks such as segmentation, description of that object to reduce them
to a form suitable for computer processing & classification of individual objects.
A mid-level process is characterized by the fact that its inputs generally are
images but its outputs are attributes extracted from those images. Finally higherlevel
objects, as in image analysis & at the far end of the continuum performing the
cognitive functions normally associated with human vision.
Digital image processing, as already defined is used successfully in a
broad range of areas of exceptional social & economic value.
3.3 WHAT IS AN IMAGE?
An image is represented as a two dimensional function f(x, y) where x
and y are spatial co-ordinates and the amplitude of f at any pair of coordinates
(x, y) is called the intensity of the image at that point.
3.3.1 GRAY SCALE IMAGE:
A gray scale image is a function I (xylem) of the two spatial coordinates
of the image plane.
I(x, y) is the intensity of the image at the point (x, y) on the image plane.
I(xylem) takes non-negative values assume the image is bounded by a
rectangle [0, a] [0, b]I: [0, a] [0, b] [0, info)
3.3.2 COLOR IMAGE
8
f (xylem)=
f (0,0)
f(0,1)
..
f(0,N-1)
f (1,0)
f(1,1)
f(1,N-1)
f=
f (2,1)
f(2,2) .. f (2,N)
.
.
10
Description
Recognized extension
TIFF
Tagged
JPEG
Format
Joint Photograph Experts .jpg, .jpeg
GIF
Group
Graphics
BMP
Format
Windows Bitmap
PNG
Portable
XWD
Graphics
X Window Dump
Image
Interchange .gif
.bmp
Network .png
.png
12
Name
Double
Description
Double _ precision, floating_ point
Uint16
Uint 32
Int8
Int 16
Int 32
Single
numbers
approximate
with
floating
values
range
(4
_point
In
bytes
the
per
elements)
Char
Logical
14
15
number of bits in each component image. For the 8bit case the number is
16,777,216 colors.
17
CHAPTER-4
WATERMARKING
18
Instead of directly embedding it into the host signal, the watermark Wo can
19
20
In other way, the digital watermarks can be divided into three different
types as
follows:
Visible watermark
Invisible-Robust watermark
Invisible-Fragile watermark
Visible watermark is a secondary translucent overlaid into the primary image.
The watermark appears visible to a casual viewer on a careful inspection.
The invisible- robust watermark is embedded in such a way that alternations
made to the pixel value are perceptually not noticed and it can be recovered
only with appropriate decoding mechanism. The invisible-fragile watermark is
embedded in such a way that any manipulation or modification of the image
would alter or destroy the watermark.
Also, the digital watermarks can be divided into two different types according
to the necessary data for extraction:
malicious attacks
Robustness
22
watermark to survive
modification. A
well only
more
robust
if
watermark
can
be
embedded
to
by
superimposing a symbol over an area of the picture. The resulting mark may
be visible or not, depending upon the intensity value. Picture cropping, e.g., (a
common operation of image editors), can be used to eliminate the watermark.
Spatial watermarking can also be applied using color separation. In this way,
23
the watermark appears in only one of the color bands. This renders the
watermark visibly subtle such that it is
viewing. However, the mark appears immediately when the colors are
separated for printing. This renders the document useless for the printer
unless the watermark can be removed from the color band. This approach is
used commercially for journalists to inspect digital pictures from a photo-stock
house before buying unmarked versions.
first
Computation Cost
Robustness
Perceptual Quality
Capacity
Spatial Domain
Low
Fragile
High Control
High (depend on the size of the
Frequency Domain
High
More Robust
Low Control
Low
Example of
image)
Mainly Authentication
Copy Rights
Applications
Table 4.4 Comparison between Watermarking Techniques
24
CHAPTER-5
FRAGILE WATERMARKING
Fragile
watermarking
authentication
has
an
interesting
variety
of
and
Tampering localization is
critical because knowledge of where the image has been altered can be
effectively used to indicate the valid region of the image, to infer the motive
and the possible adversaries. Moreover, the type of alteration may be
determined from the knowledge of tampering localization.
As to the fragile watermarks for authentication and proof of integrity, the
attacker is no longer interested in making the watermarks unreadable.
Actually, disturbing this type of watermark is easy because of its fragility.
The goal of the attackers is, conversely, producing a fake but legally
watermarked signal. This host media forgery can be reached by either
making undetectable modifications on the watermarked signal or inserting
a fake watermark into a desirable signal.
Now, it is necessary to formulate the unique features of fragile watermarking
systems in order to demonstrate what features are well sought after.
The features can also serve in theoretical analysis for making comparisons
26
among algorithms:
1)
2)
good
fragile
5)
6)
Blind detection.
information
and
non-deterministic
information
to
perform
recognized as effective mean to counter basic forgery attacks while the addition
of non-deterministic information can thwart more advanced ones.
28
In order to carry out fake image classification using SVM, first of all, we need to
construct a set of the features xi and it is described in detail in this section. Firstly,
a fragile digital water-marking scheme is introduced as an assistant, which is
used to find out the alteration of images. Then, the feature vector is constructed
by convoluting two vectors which are obtained from the detected alteration matrix.
In our fake image detection scheme, the altered area in an image should be
detected first. Here, we take use of a least significant bit (LSB) based fragile
watermarking scheme to watermark the original image, and then the watermarked
image is open to public. Digital watermarking has been developed over 10 years.
The main contributions are the robust water-marking which emphasizes the
existence of the watermark. On the other hand, the fragile watermarking received
less attention and it concerns with how to achieve the sensitivity to the image's
alteration. With the assistant of fragile watermarking, even a slight alteration to
the test images can be detected. In, a fragile watermarking scheme is introduced,
where a watermark W with the same size of the original image, i.e., mn, is
constructed to embed into the LSB plane of the original image I. Each watermark
element is inserted into the LSB of each image pixel. Then, a watermarked image
IW obtained. When the watermark is extracted form the test image I, there
will be difference between the extracted watermark We and the original
watermark W, if the watermarked image is altered.
Based on the difference, a matrix can be obtained as follow
A=XOR(W,We)
where A is a matrix composed of 0 and 1 with sizemn.It can be easily concluded
that when A(s,t)=1, the pixel I(s,t) In the test image is altered. On the other hand,
when A(s,t)=0, it is not altered. Here (s,t) is the pixel index with s=1,2,, m and
t=1,2,,n.In Fig.2, a sample detection process in shown
sample detection process in shown.Here, the
white pixels inFig. 2(b) denotes the altered pixels.
29
Figure 5.3 (a) Fake image of lena (b)Area detected with alteration
which show the number of the altered pixels along the row and the column of A
respectively. It is obvious that U and V reveal the altered area in the test image from
two directions. In the proposed scheme, we use two methods to construct the
feature vector. The first one is to joint the two vectors U and V as follows:
where + denotes the joint operator. The length l of the feature vector is m+n. The
other way to construct the feature vector is to convolute U and V, so that a feature
vector xi with length l=m+n1 is obtained as follows:
.
Wherexdenotes the convolution operator and the k-th element of the feature vector
xi can be obtained from the convolution equation as follows:
Fig shows a sample of U, V and U V curves. Once the feature vector is constructed,
the training set can be obtained as T={xi,yi}, where yi is the fakery indicator of the i-
th image, i.e.,either1or1.
Figure 5.4The curves of U, V and their convolution U V are shown in (a), (b)
and
(c) respectively.
CHAPTER-6
CONVOLUTION
6.1CONVOLUTION
Convolution is a mathematical way of combining two signals to form a third
signal.
three signals of interest: the input signal, the output signal, and the impulse
response.
called the input side algorithm and the output side algorithm.
Convolution
provides the mathematical framework for DSP; there is nothing more important
in this book.
two form the backbone of signal processing: impulse decomposition and Fourier
decomposition. When impulse decomposition is used, the procedure can be
described by a mathematical operation called convolution. Convolution also
applies to continuous signals, but the mathematics is more complicated.
In linear
6.3.3 ASSOCIATIVE
The associative property of convolution means that changing the order of
subsequent con-volution operations does not change the overall result. When
applying two or more filters to a signal, the output will be identical for every order of
filters.' This means that
g(i) * h(i)) * x(i) = g(i) * (h(i) * x(i)).
6.3.4 DISTRIBUTIVE
The order of different linear operations is irrelevant due to the distributive property
6.3.5 CIRCULARITY
The convolution with a periodic signal will result in a periodic output signal. The
periodic signal x(i) is the sum of the shifted (fundamental) periods with length N:
.
The multiplication of two spectra computed with the DFT will result in a circular
convolution; the result will be the convolution of the two periodically continued
sample blocks
CHAPTER-7
MATLAB FUNCTIONS
7.1 IMREAD
Read image from graphics files
7.1.1Syntax
A = imread(filename,fmt)
[X,map] = imread(filename,fmt)
[...] = imread(URL,...)
[...] = imread(...,idx) (CUR, ICO, and TIFF only)
[...] = imread(...,'frames',idx) (GIF only)
[...] = imread(...,ref) (HDF only)
[...] = imread(...,'BackgroundColor',BG) (PNG only)
[A,map,alpha] = imread(...) (ICO, CUR, and PNG only)
7.1.2 DESCRIPTION
The imread function supports four general syntaxes, described below.
The imread function also supports several other format-specific syntaxes.
See Special Case Syntax for information about these syntaxes.
A = imread(filename,fmt) reads a grayscale or true color image named
filename into A. If the f contains a grayscale intensity image, A is a twodimensional array. If the f i l e contains a true color (RGB) image, A is a
three-dimensional (m-by-n-by-3) array.
filename is a string that specifies the name of the graphics f i l e, and fmt is a
string that specifies the format of the f i l e. If the f i l e is not in the current
directory or in a directory in the MATLAB path, specify the fu l pathname of
the location on your system. If imread cannot find a f i l e named filename, it
looks for a f i l e named filename.fmt. See Formats for a list of a l the possible
values for fmt.
[X,map] = imread(filename,fmt) reads the indexed image in filename
into X and its associated colormap into map. The colormap values are
rescaled to the range [0,1]
.
7.2 IMSHOW
Display image
7.2.1Syntax
imshow(I)
imshow(I,[low,high])
imshow(RGB)
imshow(BW)
imshow(X,map)
imshow(filename)
himage=imshow(...)
imshow(..., param1, val1, param2, val2,...)
7.2.2 Description
imshow(I) displays the grayscale image I.
imshow(I,[low high]) displays the grayscale image I, specifying the display range for I
in [low high]. The value low (and any value less than low) displays as black; the
value high (and any value greater than high) displays as white. Values in between
are displayed as intermediate shades of gray, using the default number of gray
levels. If you use an empty matrix ([]) for [low high], imshow uses [min(I(:)) max(I(:))];
that is, the minimum value in I is displayed as black, and the maximum value is
displayed as white.
imshow(RGB) displays the truecolor image RGB.
imshow(BW) displays the binary image BW. imshow displays pixels with the value 0
(zero) as black and pixels with the value 1 as white.
imshow(X,map) displays the indexed image X with the colormap map. A color map
matrix may have any number of rows, but it must have exactly 3 columns. Each row
is interpreted as a color, with the first element specifying the intensity of red light, the
second green, and the third blue. Color intensity can be specified on the interval 0.0
to 1.0.
imshow(filename) displays the image stored in the graphics file filename. The file
must contain an image that can be read by imread or dicomread. imshow calls
imread or dicomread to read the image from the file, but does not store the image
data in the MATLAB workspace. If the file contains multiple images, imshow displays
the first image in the file. The file must be in the current directory or on the MATLAB
path.
himage = imshow(...) returns the handle to the image object created by imshow.
imshow(..., param1, val1, param2, val2,...) displays the image, specifying
parameters and corresponding values that control various aspects of the image
display. The following table lists all imshow parameters in alphabetical order.
Parameter names can be abbreviated, and case does not matter.
Parameter
Value
'Border'
'Colormap'
'DisplayRange'
HIGH])
is equivalent to
imshow(I,'DisplayRange',[LOW HIGH]).
However,
Parameter
Value
the 'DisplayRange' parameter must be specified
when calling imshow with a filename, for example
imshow(filename,'DisplayRange'[LOW HIGH]).
'InitialMagnification'
'Reduce'
Parameter
Value
'XData'
'YData'
Examples
Display an image from a file
imshow('board.tif')
Display an indexed image.
[X,map] = imread('trees.tif');
imshow(X,map)
Example 1
The five-bit binary representations of the integers 13 and 27 are 01101 and 11011,
respectively. Performing a bitwise AND on these numbers yields 01001, or 9:
C = bitand(uint8(13), uint8(27))
C =9
Example 2
Create a truth table for a logical AND operation:
A = uint8([0 1; 0 1]);
B = uint8([0 0; 1 1]);
TT = bitand(A, B)
TT =
7.4 BITOR
7.4.1 SYNTAX
C = bitor(A, B)
7.4.2 DESCRIPTION
C = bitor(A, B) returns the bitwise OR of arguments A and B, where A and B are
unsigned integers or arrays of unsigned integers.
Examples
Example 1
The five-bit binary representations of the integers 13 and 27 are 01101 and 11011,
respectively. Performing a bitwise OR on these numbers yields 11111, or 31.
C = bitor(uint8(13), uint8(27))
C =31
Example 2
Create a truth table for a logical OR operation:
A = uint8([0 1; 0 1]);
B = uint8([0 0; 1 1]);
TT = bitor(A, B)
TT =
0
7.4 Abs
7.4.1 SYNTAX
abs(X)
7.4.2 DESCRIPTION
abs(X) returns an array Y such that each element of Y is the absolute value of the
corresponding element of X.
If X is complex, abs(X) returns the complex modulus (magnitude), which is the same
as
sqrt(real(X).^2 + imag(X).^2)
Examples
abs(-5)
ans =5
abs(3+4i)
ans =5
7.5 IMNOISE
Add noise to image
7.5.1 SYNTAX
J=imnoise(I,type)
J=imnoise(I,type,parameters)
J=imnoise(I,'gaussian',m,v)
J=imnoise(I,'localvar',V)
J=imnoise(I,'localvar',image_intensity,var)
J=imnoise(I,'poisson')
J=imnoise(I,'salt&pepper',d)
J=imnoise(I,'speckle',v)
7.5.2 DESCRIPTION
J = imnoise(I,type) adds noise of a given type to the intensity image I. type is a
string that can have one of these values.
Value
Description
'gaussian'
'localvar'
'poisson'
Poisson noise
'speckle'
Multiplicative noise
uint8 input has the value 10, then the corresponding output pixel will be generated
from a Poisson distribution with mean 10.
J = imnoise(I,'salt & pepper',d) adds salt and pepper noise to the image I, where d
is the noise density. This affects approximately d*numel(I) pixels. The default for d is
0.05.
J = imnoise(I,'speckle',v) adds multiplicative noise to the image I, using the equation
J = I+n*I, where n is uniformly distributed random noise with mean 0 and variance v.
The default for v is 0.04.
Note The mean and variance parameters for 'gaussian', 'localvar', and
'speckle' noise types are always specified as if the image were of class double
in the range [0, 1]. If the input image is of class uint8 or uint16, the imnoise
function converts the image to double, adds noise according to the specified type
and parameters, and then converts the noisy image back to the same class as the input.
CHAPTER-8
RESULT &ANALYSIS
BIBLOGRAPHY
forgeries by detecting
.-T. Ng, S.-F. Chang, A model for image splicing, IEEE Int. Conf.
on Science and Engineering from the Chinese University
Image
Inter-national
Workshop
Toronto,Cananda, University.
on
Information
His
current
Hiding,
research
Vol.
3200,
interests
Capabilities of MATLAB
MATLAB is an interactive system whose basic data element is an array that
does not require dimensioning. This allows you to solve many technical computing
problems, especially those with matrix and vector formulations, in a fraction of the
time it would take to write a program in a scalar non interactive language such as
C or FORTRAN.
The name MATLAB stands for matrix laboratory. MATLAB was originally
written to provide easy access to matrix software developed by the LINPACK and
EISPACK projects. Today, MATLAB engines incorporate the LAPACK and BLAS
libraries, embedding the state of the art in software for matrix computation.
MATLAB has evolved over a period of years with input from many users. In
university environments, it is the standard instructional tool for introductory and
advanced courses in mathematics, engineering, and science. In industry,
MATLAB is the tool of choice for high-productivity research, development, and
analysis.
MATLAB features a family of add-on application-specific solutions called
toolboxes. Very important to most users of MATLAB, toolboxes allow you to learn
and apply specialized technology. Toolboxes are comprehensive collections of
MATLAB functions (M-files) that extend the MATLAB environment to solve
particular classes of problems. Areas in which toolboxes are available include
signal processing, control systems, neural networks, fuzzy logic, wavelets,
simulation, and many others.
Development Environment
This is the set of tools and facilities that help you use MATLAB functions
and files. Many of these tools are graphical user interfaces. It includes the
MATLAB desktop and Command Window, a command history, an editor and
debugger, and browsers for viewing help, the workspace, files, and the search
a help browser.
The command window is the one with the >> prompt. In version 7 it has three sub
windows,
the current directory window, listing all the files in your current directory,
the workspace window (click on the tab), listing all the variables in your
workspace, and
the command history window, containing all your commands going back
over multiple sessions.
You can do things like running M-files from your directory, plotting variables from
your workspace, and running commands from your command history or
transferring them to a new M-file, by clicking (or right-clicking or double-clicking)
on them.
To see the figure window in action, type
Z = peaks; surf(Z)
And then hit RETURN. (Note that it is crucial to get the punctuation in the
above command correct.) You should get a 3D plot of a surface in the Figure
window called Figure 1. (Note that peaks is a built-in function that produces the
data for this plot, and surf is a built-in function that does the plotting. When you
come to do your own plots you will be creating your own data of course.) You can
play with the buttons at the top of the Figure window (for example to rotate the
figure and see it from different perspectives).
To obtain the editor/debugger, type edit. You can then create files by typing
them into this window, and save them by clicking on File --> Save As. You must
call the file something like file1.m, i.e. save it with a .m extension to its name, so
that MATLAB recognizes it as an M-file. If the file is a script, you can run unit by
typing its name (without the .m). Create a script file containing the single line Z =
peaks; surf (Z), save it as file1.m, and run it.
To obtain help you can type help win, which produces a simple browser
containing the MATLAB manual. A much more sophisticated web-based help
facility is obtained by typing helpdesk, but at peak times this may be slow in
starting up. If you have MATLAB on your home PC you may well prefer the
helpdesk.
Finally, if you know the name of the command you are interested in, you
can simply ask for help on it at the MATLAB prompt. For example to find out about
the for command, type help for or doc for. Do each of these now: for is one of the
loop-constructing commands that will be used in the programs you write in this
course.
Use any help facility to find the manual page for the command plot, which resides
in the directorygraph2d. Read the manual page for plot.
Graphics
MATLAB has extensive facilities for displaying vectors and matrices as
graphs, as well as annotating and printing these graphs. It includes high-level
functions for two-dimensional and three-dimensional data visualization, image
processing, animation, and presentation graphics. It also includes low-level
functions that allow you to fully customize the appearance of graphics as well as
to build complete graphical user interfaces on your MATLAB applications.
M-Files
Script M-Files
The heart of MATLAB lies in its use of M-les. We will begin with a script Mle, which is simply a text file that contains a list of valid MATLAB commands. To
create an M-le, click on File at the upper left corner of your MATLAB window, then
select New, followed by M-le. A window will appear in the upper left corner of your
screen with MATLAB's default editor. (You are free to use an editor of your own
choice, but for the brief demonstration here, let's stick with MATLAB's. It's not the
most powerful thing you'll ever come across, but it's not a complete slouch either.)
In this window, type the following lines (MATLAB reads everything following a %
sign as a comment to be ignored):
%JUNK: A script file that computes sin(4),
%where 4 is measured in degrees.
workspace of all variables ,clc, which clears the Command Window of all
previously issued commands, and clf, which clears the figure window. In addition,
we delete the(assumed)diary file junk.m and restart it with the command diary
junk.out. Finally,
we set echo on so that the commands we type here will appear in the
command window. We now type in all commands required for plotting and
maximizing the function f(x).
%TEMPLATE:MATLABM-file containing a convenient
%workplace template.
clear; clc; clf;
delete junk.out
diary junk.out
echo on
%
fprime=diff(x*exp(-x^4/(1+x^2)))
pretty(fprime)
r = eval(solve(fprime))
%
Diary off
Echo off
The only new command in template.m is pretty(), which simply instructs
MATLAB to present the expression fprime in a more readable format. Once
template.m has been run, the diary filejunk.out will be created. Observe that the
entire session is recorded, both inputs and outputs. It's also worth noting that
while pretty()makes expressions look better in the MATLAB Command Window,
its output in diary files is regrettable.
Function M-files
The second type of M-file is called a function M-file and typically (though
not inevitably) these will involve some variable or variables sent to the M-file and
processed. Function M-files need neither accept input nor return output. Every
function M-file begins with the command function. Function M-files can have sub
functions (script M-files cannot have sub functions).
Debugging M-files
Since MATLAB views M-files as computer programs, it offers a handful of
tools for debugging. First, from the M-file edit window, an M-file can be saved and
run by clicking on the icon with the white sheet and downward-directed blue arrow
(alternatively, choose Debug, Run or simply type F5). By setting your cursor on a
line and clicking on the icon with the white sheet and the red dot, you can set a
marker at which MATLAB's execution will stop. A green arrow will appear, marking
the point where MATLAB's execution has paused. At this point, you can step
through the rest of your M-file one line at a time by choosing the Step icon
(alternatively Debug, Step or F6).
Unless you're a phenomenal programmer, you will occasionally write a
MATLAB program (M-file) that has no intention of stopping any time in the near
future. You can always abort your program by typing Control-c, though you must
be in the MATLAB Command Window for MATLAB to pay any attention to this.
of these
notes for more on Unix shell commands). So, for example, the three commands !
ls
junk.m more junk.m, and files serve to list the contents of the directory you happen
to be in, copy the file junk.m to the file more junk.m, and list the file again to make
sure it's there. Try it.
otherwise.
char(input) Converts just about any type of variable input into a string
(character array).
str2num(str) Converts the string str into a numeric variable. (See also
str2double().)
SIMULINK
SIMULINK is a MATLAB add-on taylored for visually modeling dynamical
systems. To get started with SIMULINK, choose File, New, Model.
M-book
M-book is a MATLAB interface that passes through Microsoft Word,
apparently allowing for nice presentations. Unfortunately, my boycott of anything
Microsoft precludes the possibility of my knowing anything about it.